![](https://fire-monkey.ru/uploads/set_resources_12/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
Kitty
-
Постов
792 -
Зарегистрирован
-
Посещение
-
Победитель дней
16
Активность репутации
-
Kitty отреагировална Brovin Yaroslav в Выравнивание текста по обеим сторонам
Нет, поддержки выравнивания текста по ширине контейнера нету.
-
Kitty отреагировална Brovin Yaroslav в Вторичное окно программы без передачи ему фокуса
У попап формы было свойство отвечающее за то будет ли она закрываться при смене фокусе, перемещении родительского окна и тд или нет. Что-то вроде StayOpened.
-
Kitty отреагировална Brovin Yaroslav в Применение эффекта к форме
Эффекты могут быть применены только к контролам. Поэтому, в вашем случае достаточно:
Положить промежуточный контейнер (TLayout) в вашу форму Переместить все контролы формы в контейнер Кинуть в контейнер эффект. -
Kitty отреагировална AngryOwl в [XE7-XE8] [Android] Highscreen Spider
Были проблемы с поиском драйверов для этого устройства под Windows 7/8/10 (x64)
Поэтому выложу сюда дрова, для тех кому могут понадобиться.
AndroidUSB Google (x86-64).zip
-
Kitty отреагировална AngryOwl в [XE7-XE8] [Android] SONY
Для чего использовались драйвера (Windows 7/8/10 (x64)):
Sony Xperia SP
Sony Xperia L
Sony Xperia Tablet Z
и в архиве еще туча райверов для других девайсов от Sony ( размер архива 400 Mb !)
https://drive.google.com/open?id=0B5LS-2rAfJMDVkIycVlOQ1hqejA
P.S. Здесь и сделаю примечание по работе с данными девайсами.
В случае попытки работы с графическими примитивами, рисование закрашенных градиентом примитивов, возникает "баг" - вместо того чтобы рисовать, например, прямоугольник залитый градиентом, рисуется прямоугольник цветом "Fuchsia".
Чтобы избежать этого, рекомендую использовать обычные PNG.
Например:
-
Kitty отреагировална AngryOwl в [XE7-XE8] [Android] Fly IQ4516 Tornado Slim Octa
Аналогично, как и с другими "нестандартными" девайсами - почти пол дня потратил на поиски дров под Windows 7/8/10 для данного девайса. Ничего не помогло, кроме данной программки.
Устанавливаем ее - она дает возможность работать с тел.: контакты, файловый менеджер и т.д. и т.п.
А главное - ставит драйвера для него!
mobilego_setup_full818.zip
З.Ы. после установки программу можно и удалить - главное дрова поставит...
-
Kitty отреагировална xenon54 в [TListBox] Как отобразить итемы в виде панелей?
50 элементов для ListBox в мобильной платформе это ооочень много. Вообще, где-то писали что ListBox следует использовать не более чем как для меню, т.е. количество элементов не более десятка, на вскидку. Если у вас список более 10 элементов, листбокс лучше не использовать. ListView очень хорош с большим количеством элементов. Основная его фишка ускорения работы, как я понял, это то что он не держит кучу чилдрен контролов у себя и всю отрисовку делает только он сам, а вот листбокс это куча контролов, каждый из которых занимается отрисовкой. Есть у тебя 50 итемов, на них на каждом по 3 контрола, считай метод отрисовки вызовется 201 раз (1=сам листбокс, 50 это каждый итем, и еще 150 это по 3 контрола в каждом итеме).
-
Kitty отреагировална Brovin Yaroslav в Аналог Post в FMX android
С моей точки зрения, метод TThread.Queue имеет один весомый недостаток. А именно:
Если вызов метода TThread.Queue идет в главном потоке, то код будет вызыван немедленно. class procedure TThread.Queue(const AThread: TThread; AMethod: TThreadMethod); var LSynchronize: PSynchronizeRecord; begin if AThread <> nil then AThread.Queue(AMethod) else begin New(LSynchronize); try LSynchronize.FThread := nil; LSynchronize.FSynchronizeException := nil; LSynchronize.FMethod := AMethod; Synchronize(LSynchronize, True); // <-- Смотрим сюда finally if MainThreadID = CurrentThread.ThreadID then Dispose(LSynchronize); end; end; end; А потом на кусочек этого кода:
class procedure TThread.Synchronize(ASyncRec: PSynchronizeRecord; QueueEvent: Boolean = False); var SyncProc: TSyncProc; SyncProcPtr: PSyncProc; begin if CurrentThread.ThreadID = MainThreadID then begin if Assigned(ASyncRec.FMethod) then ASyncRec.FMethod() else if Assigned(ASyncRec.FProcedure) then ASyncRec.FProcedure(); end else Из реализации метода Synchronize, как раз и видно, что код будет вызван немедленно, если текущий тред - это главный поток.
Итог
TThread.Queue заменяет PostMessage, если вызов идет не из главного потока. Если вызов TThread.Queue идет из главного потока, то это равносильно прямому вызову процедуры или метода.
-
Kitty отреагировална xenon54 в ListViewItem Transpatent, как?
У стиля листвью есть объект "itembackground" : TColorObject. Выставляете у него свойство "Color" в нужное вам значение с альфа каналом (как пример $11FF0000) и будет вам счастье.
-
Kitty отреагировална Brovin Yaroslav в FGX. Индикация хода выполнения длительных операций, виртуальная клавиатура и ActionSheet
Добавлена новая версия расширения компонентов FireMonkey. Новый пакет поддерживается только для XE6.
Список возможностей:
Progress Dialog - Добавлены события OnShow, OnHide. Progress Dialog - Исправлены утечки памяти на Андроид и IOS TfgProgressDialog - Добавлен метод для немедленного сброса прогресса без анимации ResetProgress. TfgActionSheet - Добавлена поддержка действий TAction. Так же теперь можно указать только по одной кнопке деструктивного и отменного типа. TfgColorsPanel - Добавлен новый контрол для выбора цветов из готовых пресетов. Поддерживает следующие наборы цветов: WebSafe, X11. Позволяет указывать свои наборы цветов. TfgGradientEdit - Добавлен новый контрол для задания градиента. TfgLinkedLabel - Добавлен новый контрол - метка со ссылкой. Открывает указанную ссылку в стандартном браузере. Поддерживает все платформы. Добавлены и улучшены примеры каждых контролов. Добавлен набор хелперов И другие улучшения на уровне кода. TfgActivityDialog
Работа под iOS:
Работа под Андроид (Выше, чем GingerBread 2.3):
Работа под Андроид (GingerBread 2.3):
TfgProgressDialog
Работа под iOS:
Работа под Андроид (Выше, чем GingerBread 2.3):
Работа под Андроид (GingerBread 2.3):
TfgActionSheet
TfgColorsPanel
TfgLinkedLabel
-
Kitty отреагировална Brovin Yaroslav в Странное поведение XE8
Добрый день,
Да, ошибку исправлю. Используйте
ComboBox.Clear; Вместо:
ComboBox.Items.Clear; -
Kitty отреагировална Skyline в [Android] Подключение MediaPlayer с Android API
Вопрос решён.
Для воспроизведения/открытия/просмотра аудио/видео встроенными средствами написал такую функцию:
void HiddenPlay(String FileName) { _di_JMediaPlayer Player = TJMediaPlayer::JavaClass->init(); Player->setDataSource(StringToJString(FileName)); Player->prepare(); Player->start(); } Для воспроизведения/открытия/просмотра любого файла установленными на устройстве программами такая функция:
void PlayMulti(String FileName, String MimeType) { _di_JIntent Intent = TJIntent::JavaClass->init(TJIntent::JavaClass->ACTION_VIEW); _di_Jnet_Uri Data = StrToJURI(FileName); Intent->setDataAndType(Data, StringToJString(MimeType)); SharedActivity()->startActivity(Intent); } Вторым аргументом надо передать mime-type файла.
Пример вызова:
PlayMulti("test.jpg", "image/jpeg"); -
Kitty отреагировална Кривяков Виталий в TUITabControl
Добрый день!
В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь
В составе архива сам компонент и пример его использования.
FMXUI.zip
-
Kitty отреагировална Brovin Yaroslav в [Aeronavigator] Три мобильных приложений для гражданской авиации на ОС Windows, Android, iOS.
Официальный сайт: http://aeronavigator.ru/index.php/ru/products Автор: Aeronavigator Ссылка на приложения: Google Play, App Store Подробное описание: aeronavigatorstory-ru.pdf
-
Kitty отреагировална Brovin Yaroslav в [TWebBrowser] [iOS] Открытие прикрепленной html страницы в TWebBrowser
Добрый день,
Прикрепляю проект, где все загружается корректно (iOS Simulator). WebBrowserLoadLocalFile.zip
Внимательно проверьте место назначения развертывания файла и факт того, что он задеплоился:
Обязательно слэш в конце: "Startup\Documents\" Строка с файлом в Deployment Manager не должна быть серой!
Загрузка идет таким способом:
uses System.IOUtils; procedure TForm15.FormCreate(Sender: TObject); begin WebBrowser1.URL := 'file:/' + TPath.Combine(TPath.GetDocumentsPath, 'DemoPage.html'); end; P.S. Сделано все по руководству Включение своих файлов в приложение
-
Kitty отреагировална Brovin Yaroslav в [1C-Papyc] Мобильное приложение для мастеров-приемщиков сервсиных автоцентров на ОС Android
Официальный сайт: https://rarus.ru/1c-auto/alfa-avto-mobilnyy-priemshchik/ Автор: 1C-Pарус Ссылки на приложение: Google Play Подробное описание: 1С_Рарус.pdf
-
Kitty отреагировална antarey в Проблемы со стилями и релиз конфигурацией XE8 &C++
Написал Ярославу, говорит взяли на заметку, правда когда поправят не уточнил
-
Kitty отреагировална Brovin Yaroslav в Удаление формы из back-стека
Например, у нас есть 3 формы MultipleForms.zip
Главная (Form1) Форма ввода пароля (Form2) Третья форма (Form3) Form2 в момент открытия Form3 должна поставить себя в очередь на самоудаление (Release). Чтобы когда откроется Form3, Form2 была уже разрушена. В этом случае после закрытия Form3, вы вернетесь в Form1.
Код открытия Form3 из Form2:
procedure TForm2.Button2Click(Sender: TObject); begin Form3.Show; Release; end; procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := TCloseAction.caFree; end; -
Kitty отреагировална Brovin Yaroslav в [TListBox] Как отобразить итемы в виде панелей?
TListView хорош для отображения большого объема данных. Но он с точки зрения добавления отдельных полей внутрь итемов, требует дополнительных знаний. ПОэтому если данных не много, то для этих вещей хорошо подходит TListBox, с которым проще работать.
Поэтому нужно смотреть по ситуации.
Много итемов и мобильные платформы -> TListView Мало итемов или настольные платформы -> TListBox -
Kitty отреагировална Brovin Yaroslav в Шторка TMultiView залезает на Toolbar
По идеи если вы хотите, чтобы у вас тулбар распологался сверху относительно всего остального, то TMultiView и TargetControl должны лежат в отдельном контейнере. Например так:
Потому что TMultiView в режиме Drawer распологается в ручную относительно своего родителя. На моем примере Drawer будет вытянут по высоте Layout1. Если же TMultiView лежит на форме, то он будет растягиваться по высоте формы.
-
Kitty отреагировална UniSoft в Проблемы со стилями и релиз конфигурацией XE8 &C++
ну исходники библиотек то одни...
а вот в x64 не проявляется...
да и еще этот баг там не единственный, понизив приоритет инициализатора все запускается нормально,
но падает уже при закрытии и в каком-то другом модуле.
патч fmx.lib и cw32mt.lib решают проблему...
http://rghost.net/6rNpG5LlC
но я бы не рекомендовал это использовать, высока вероятность,
что может начать конфликтовать с какими либо другими модулями.
как устроена инициализация, и о каких приоритетах идет речь,
можно посмотреть тут: функция _init_exit_proc()
C:\Program Files (x86)\Embarcadero\Studio\16.0\source\cpprtl\Source\startup\initexit.c
C:\Program Files (x86)\Embarcadero\Studio\16.0\source\cpprtl\rtlinc\_startup.h
по хорошему, нужно бы отправить баг-репорт, ведь баг то критический,
но у меня нет EDN аккаунта.
-
Kitty отреагировална Brovin Yaroslav в [TMultiView] Как избежать задержки при первом появлении TMultiView?
Так, я посмотрел. Сохраняем себе такую процедуру:
procedure PreloadContent(const Control: TControl); var I: Integer; begin if Control is TStyledControl then TStyledControl(Control).ApplyStyleLookup; for I := 0 to Control.ControlsCount - 1 do PreloadContent(Control.Controls[I]); end; Она форсирует загрузку стилей. Задержка при появлении TMutliView заключается в том, что стиль загружается не сразу у любого контрола, а только по мере появления контрола. Обычно это происходит при первой отрисовки. Это правило касается всех контролов.
Поэтому, в этом случае, вам нужно форсировать загрузку стилей. Это можно сделать при помощи моей процедуру PreloadContent.
Добавьте в TForm.OnCreate и это решит задержку при первом появлении:
PreloadContent(MultiView1); -
Kitty отреагировална UniSoft в Проблемы со стилями и релиз конфигурацией XE8 &C++
Проблема в инициализации модулей, точнее в последовательности их инициализации. FMX.Types.pas initialization ... // <<< тут проблема, // на момент вызова этого конструктора, инициализация модуля System.Rtti.pas // еще не выполнялась... // т.е. модуль System.Rtti.pas инициализируется после FMX.Types.pas SharedContext := TRttiContext.Create; ... System.Rtti.pas class function TRttiContext.Create: TRttiContext; begin EnsurePoolToken(@Result.FContextToken); end; constructor TPoolToken.Create; begin TMonitor.Enter(PoolLock); // вот тут то и падение, модуль еще не инициализирован и PoolLock = nil try if Pool = nil then begin Pool := TRttiPool.Create; PoolRefCount := 1; end else Inc(PoolRefCount); finally TMonitor.Exit(PoolLock); end; end; procedure EnsurePoolToken(TokenRef: PInterface); var sample: Pointer; procedure DoCreate; var tok: IInterface; begin tok := TRttiContext.FGlobalContextToken; if tok = nil then tok := TPoolToken.Create; if AtomicCmpExchange(PPointer(TokenRef)^, Pointer(tok), sample) = sample then begin // We won the race to initialize the TokenRef location, so // zero-out interface reference without decrementing reference count. PPointer(@tok)^ := nil; end; end; begin sample := PPointer(TokenRef)^; if sample <> nil then Exit; DoCreate; end; initialization ... PoolLock := TObject.Create; Есть еще один нюанс, инициализация System.Rtti.pas зачем-то выполняется два раза, к краху это не приведет, но небольшой (не накопительный) memleak будет. Проблема в библиотеках, и похоже только Win32 ЗЫ. к стилям никакого отношения не имеет... достаточно одной строчки: void __fastcall TForm1::FormCreate(TObject *Sender) { TValue::From<String>("test"); } -
Kitty отреагировална Gingercat в Впечатления от Update1 в C++ Builder XE8
Хм - видимо нужно прекращать разговор - я не пойму чего вы хотите. Волшебной кнопки - написать программу не существует. С чего вы взяли, что VS неудобная? С чего взяли, что большинство программ написаны В, ЕЩЕ РАЗ ПОДЧЕРКНУ - В, а не на (НА языке пишут В среде разработки) - кто вам выдал, под страхом смерти, такую секретную информацию)))) Писать можно и в нотепаде - это лишь вопрос удобства и не более.
Большинство программ пишутся на плюсах и си (хотя, как я подозреваю, понятие - программа - у нас разные), и поверьте - далеко не в VS (есть более достойные и бесплатные кандидаты).
-
Kitty отреагировална zairkz в Более быстрая альтернатива DrawBitmap
Попробуй движок Shadow Engine для Firemonkey, FPS впечатляет.
https://www.youtube.com/watch?v=w6lGasU61HQ
Gihub: https://github.com/dimsa/ShadowEngine