Перейти к содержанию
Fire Monkey от А до Я

AlexG

Пользователи
  • Постов

    393
  • Зарегистрирован

  • Посещение

  • Победитель дней

    45

Весь контент AlexG

  1. procedure TfmMain.DoAppExit; begin try Toast('Shutdown...'); TThread.Synchronize(nil, Do__________); // тут что-то делаем до завершения finally KillMe; // из Android.KillMainProcess end; end; android.KillMainProcess.zip
  2. Попробуйте просто "обернуть" эту часть кода: Application.CreateForm(TForm27, Form27); // можно это тоже внутрь Synchronize поместить TThread.Synchronize(nil, procedure begin Form27.ProgressBar1.Visible := false; Form27.StartUpLabel.Text := 'Ждите...'; Form27.Visible := true; end);
  3. uses FMX.VirtualKeyboard, FMX.Platform, ... var Keyboard: IFMXVirtualKeyboardService; begin if TPlatformServices.Current.SupportsPlatformService( IFMXVirtualKeyboardService, IInterface( Keyboard ) ) then Keyboard.HideVirtualKeyboard; end;
  4. Если я правильно понял, то Вам достаточно у TImage установить свойство ClipChildren = True.
  5. Посмотрите в сторону "оберток". Например тут. Там есть файл android.hardware.fingerprint.pas (и не только). Вроде бы, есть все, что нужно. А уж как все это использовать - это другой вопрос, смотрите примеры.
  6. AlexG

    TLang + TEdit.TextPrompt?

    Добрый! Никак. Как и многие другие элементы... Решение, до сих пор, - создание своего компонента или модуля для мультиязычных приложений. Пример - Мультиязычность в андроиде. Код, конечно, давно изменился и оптимизировался не раз. Если будет свободное время - выложу как-нибудь последнюю версию.
  7. Попробуйте установить у TEdit свойство KeyboardType = Alphabet, а не Default.
  8. Сталкивался с подобным. В моем случае, решение было следующим: использовал не OnItemClick, а OnMouseDown. И у TListBox свойство MultiSelectStyle = None. Код, примерно, такой: procedure TfmMain.lbxCListMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); var LI : TListBoxItem; begin if Assigned(Sender as TListBox) then begin LI := TListBox(Sender).ItemByPoint(X, Y); if Assigned(LI as TListBoxItem) and (Button = TMouseButton.mbLeft) then begin LI.IsSelected := True; TTask.Run(procedure begin DoSelectItemC(lbxCList, LI.Index); // тут Ваша процедура обработки выбранного TListBoxItem (если внутри DoSelectItemC работаем с GUI, то не забываем TThread.Synchronize()...) end); end; end; end;
  9. Я не утверждаю, что в Вашем случае - это решение вопроса. Я лишь констатирую факт того, что иногда, из-за некачественного кабеля могут возникать проблемы, которые никак не ассоциируются с кабелем (не запускается приложение, не деплоится и т.п.) У меня работает все при таких настройках
  10. Отмечу, что сталкивался с такой проблемой - То работает запуск приложения на смартфоне, то не работает, то странности возникают еще при деплоее на смартфон... В общем скажу просто - проблема была в кабеле. Самое интересное, что при подключении смартфон "виделся", и вроде бы все ок, но постоянные глюки при запуске приложения привели к одному решению - смена кабеля и все заработало. Не скажу, что это панацея, но я в своей практике уже трижды сталкивался с подобным. Кабель может работать на подзарядке, и даже при работе с устройством в плане чтения и записи фалов, через проводник, но будет "глючить" при более "тонкой" работе.
  11. Я так и не нашел оптимального решения. Только делать для разных аппаратов разную реализацию.
  12. Собственно это зависит от того как Вам требуется. У меня при нажатии на кнопку на форме.
  13. Мне помогло следующее: TThread.Synchronize(nil, procedure begin memoChatMessage.Text := ' '; memoChatMessage.SelectAll; memoChatMessage.DeleteSelection; end);
  14. Зачем? Все просто. Все описано - измените стиль. Не хотите менять стандартные? - создайте дубль, назовите иначе, измените свойства - используйте оба стиля, смотря какой когда нужен. Если нужно в рантайме, то все как обычно - используйте StylesData['тут_имя_свойства'] := ...
  15. Тут. Я использую второй вариант. P.S. [enatechno] опередил )
  16. Я поступил проще - на Токио пока даже и не пробовал переходить... Берлин работает, как работает - устраивает. Пока Токио не допилят, пока об этом все не напишут, и пока не появится как минимум первый апдейт - даже и пробовать не буду. Политика Embarcadero мне понятна. Искренне надеюсь, что им хватит ума и бюджета на то, чтобы развивать продукт. Оставался и остаюсь приверженцем Delphi, и во многих случаях ему просто нет объективной замены/альтернативы. Но кидаться "в омут" (на каждую новую версию) - желания нет.
  17. Есть такое дело. Он (Боян Митов) один автор сего продукта. Делает его ооооочень давно. В последнее время ударился в создание компонент и библиотек для работы с Arduino (почитать все новости можно в блоге). Недавно объявил о том, что скоро появится версия VideoLab для FMX с поддержкой не только Windows, но и MacOS и Android.
  18. Нет нет. Есть и под FMX. Смотрите на странице загрузки - Firemonkey and VCL, Current Version Installers. Но проблемы все те же останутся. Только Windows и сложность организации rtmp-потоков.
  19. Называется VideoLab (библиотека для работы с видео) Проблем с ним несколько. Во-первых - это только под Windows (уточним, насколько я знаю, сейчас Митов занимается созданием кроссплатформенной версии библиотеки, и вроде у него уже есть "наброски" (разумеется - под FMX), но когда появится релиз - не знаю). Во-вторых - непосредственно сама эта либа работать с RTMP не может. Так-что прийдется использовать фильтры, которые еще найти надо будет, если они есть )))
  20. На случай "своими руками", я бы порекомендовал Вам копать в сторону WebRTC. Разумеется все зависит от конечных задач, стоящих перед Вашей программой. Судя по всему - это организация потокового видео в режиме реального времени на соответствующие сервисы. А это значит, что: - нужно организовать формирование и передачу RTMP (RTSP) потока, с чем в Delphi (если о нем речь идет) есть определенные сложности) (в ситуации с С++ будет немного проще); - нужно использовать кодеки (encoder), формат которых поддерживается теми системами, на которых вы хотите видеть воспроизведение потока. Аналогично, как и в вопросе с rtmp-потоком, ситуация с реализацией в Delphi будет сложнее (хотя тоже можно); - что касается конвертации кадров из одного формата в другой, то тут все немного проще. В интернете полно алгоритмов описывающих конвертацию битмапа из одного формата в другой. Разумеется - не все так просто. Поскольку необходимо не просто конвертировать кадры, перед тем как передать их энкодеру, но еще и правильно от энкодера получить сам поток и передать его. После энкодера, конечно, идут не просто "кадры". В зависимости от настроек энкодера, сначала идет "ключевой кадр" (и он повторяется с определенной периодичностью), а за ним последовательность "фреймов" - "описывающих" лишь изменения в "ключевом кадре". Кратко как-то так... В любом случае, я бы порекомендовал Вам сначала пошарить по ресурсу, описывающему работу с потоковым видео. Просто понять как это работает, в принципе. Ну и многое можно там же подчерпнуть. Например, просто как оптимальнее настроить энкодер для трансляции того или иного видео.
  21. Добрый! Есть. Можно использовать сторонние библиотеки и модули, но цена у них приличная, а можно самому сделать. Вот на счет "самому" - будет непросто))) Очень непросто)
×
×
  • Создать...