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

Brovin Yaroslav

Администраторы
  • Постов

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

  • Посещение

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

    390

Ответы сообщества

  1. Пост Brovin Yaroslav - сообщение в Android 64 ошибка "External exception 1." был отмечен как ответ   
    В общем исправление проблемы простое:
    Добавляете в свой проект файл FMX.Helpers.Android.pas. Находите там строчку:   FTimerHandle: Cardinal; Меняете ее на: FTimerHandle: TFmxHandle; Собираете и проблемы больше нет.
  2. Пост Brovin Yaroslav - сообщение в Есть ли какая-нибудь возможность вставить тире в package файла AndroidManifest.xml был отмечен как ответ   
    Нет. Название Java пакета не поддерживает "-" в названии. Только латинские буквы в нижнем и верхнем регистрах, числа и '_'.
    https://developer.android.com/guide/topics/manifest/manifest-element?hl=ru#package
     
  3. Пост Brovin Yaroslav - сообщение в Как отловить изменение положения контрола был отмечен как ответ   
    Если это свой компонент, то перекройте метод TControl.DoAbsoluteChanged и не забудьте вызывать базовый метод через inherited;
  4. Пост Brovin Yaroslav - сообщение в В Android TimeEdit не позволяет устанавливать секунды был отмечен как ответ   
    через всплывающее окно не получится это сделать. Потому что сам андроид не дает такой возможности. А если использовать инплейс редактирование через клавиатуру, то просто задайти кастомный формат времени, в котором добавьте секунды.
  5. Пост Brovin Yaroslav - сообщение в Tokyo 10.2 Не работает дебаг в Android был отмечен как ответ   
    Физически, при старте приложения с дебагом, среда посылает на ваше устройство интент на запуск приложения. В интенте передается порт для отладчика, по которому среда будет взаимодействовать с дебаггером.
    Система, получив интент:
    Стартует приложение Приложение при старте получает порт и пытается поднять gdb сервис отладки на указанном порту. Соответственно, если порт уже занят, то вы получите эту ошибку. Он может быть занят в результате предыдущей отладки делфи приложения, которое не было завершено, что заставляет Андроид удерживать нужный среде порт. Помогает обычно:
    Полный ребут девайса, который гарантирует, что никакой ваш процесс у вас не повис. Удаление из процессов винды android_gdb. Который так же может удерживать нужный вам порт.
  6. Пост Brovin Yaroslav - сообщение в Определить, к какому TObjectList принадлежит элемент был отмечен как ответ   
    Если честно, тут задача на мой взгляд в неправильном подходе. Который порождает странную задачу. Это как плыть против течения, вместо того, чтобы плыть по течению.
    Если требуется выполнить данную задачу, то  лучше не побояться написать один дополнительный класс "Менеджер объектов", которому вы будите делегировать данную задачу.
    Чтобы поиск был быстрый, нужно использовать словарь. Время поиска будет O(1) против поиска в списке. Один из вариантов реализации может быть таким:
    В менеджере есть набор ваших списков (логические группы объектов) - список списков В менеджере есть словарь соответствия контрол -> индекс списка из (1) при добавлении контрола добавляете его в список и заносите контрол в словарь Поиск за О(1) Вариант, который предложил Kami хороший для вариантов, когда объекты ваши. А вот если вы хотите для штатных контролов это сделать, то чтобы подмешать такой интерфейс, вам потребуется сделать наследников для каждого UI контрола. А если эти контролы еще и на форме лежат, то там придется изрядно попотеть, чтобы добавить в IDE ваши версии штатных контролов с этим интерфейсом.
    P.S. Избегайте паттерна один контрол "владеется" несколькими списками. Это к "При создании каждого из них  AOwnsObjects задано как True.". Такой подход рано или поздно при усложнии логики закончится AV и сложным дебаггингом, кто кого удалил и когда и почему. Используйте золотое правило: "Один объект может иметь только одного владельца, один объект может использовать во многих других местах. Только владелец отвечает удаление объекта и в хорошем случае и за его создание. Клиенты объекта только пользуются им и не удаляют его."
  7. Пост Brovin Yaroslav - сообщение в Возможна ли компиляция под armv6? был отмечен как ответ   
    Никак, компилятор поддерживает только armv7.
  8. Пост Brovin Yaroslav - сообщение в EJNIException был отмечен как ответ   
    В настройках проекта для андроида:

  9. Пост Brovin Yaroslav - сообщение в Linux платформа был отмечен как ответ   
    Из коробки Linux работает только для консольных приложений без GUI. Если хочется, чтобы FMX приложение можно было запускать на Linux, то нужно купить дополнительно стороннюю либу: http://www.fmxlinux.com 
  10. Пост Brovin Yaroslav - сообщение в ListView - фиксированный заголовок был отмечен как ответ   
    Раньше точно делали прилипание хедера в ЛистВью. К сожалению сейчас точно не могу сказать ничего на этот счет. Но точно было сделано. Но, как вариант, если речь идет об ios, то в TListView есть поддержка нативной реализации. И там реализованы выталкивающие хедеры
    http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.ListView.TListViewBase.NativeOptions
  11. Пост Brovin Yaroslav - сообщение в Toast и tDuration был отмечен как ответ   
    Добрый день,
    На андроиде нет такой возможности. Там эти два режима задаются через константы и не имеют привязки к конкретным значениям времени.
     
  12. Пост Brovin Yaroslav - сообщение в [Форум]Последние сообщения - проблемы был отмечен как ответ   
    Починил
  13. Пост Brovin Yaroslav - сообщение в TAnimationfloat некоректно работает с Texpander был отмечен как ответ   
    Все правильно работает. У вас ошибка. У вас стоит свойство StartFromCurrent. Что означает дословно, в качестве стартового брать текущее значение. В итоге получаем анимацию с 200 до 200 и 350 до 350.
  14. Пост Brovin Yaroslav - сообщение в Картинка в TListBoxItem был отмечен как ответ   
    В стиле для андроида может быть указано, чтобы картинку не растягивать. А под Windows, наоборот. Посмотрите на свойство Stretch и WrapMode
  15. Пост Brovin Yaroslav - сообщение в ShowModal - почему нельзя использовать блокирующий режим? был отмечен как ответ   
    Добрый день,
    На андроиде в принципе не поддерживаются синхронные диалоги. И причина прежде всего в архитектуре андроид приложения.
    Если говорить о нативном приложении, то оно состоит из двух потоков Java UI Thread  (Он же главный поток приложения) и Delphi Thread. FireMonkey работает в делфи треде. В то время, как все нативные вещи (диалоги, пикеры, браузеры, карты, медиа проигрыватели и тд) все они работают в Java UI Thread. Помимо этого, когда активити (работает в так же в java UI thread) меняет своё состояние (запущена, приостановлена, остановлена, возобновлена и тд), она должна синхронизировать это состояние в делфи треде. Или другими словами передать эту информацию в делфи тред. Для передачи используются пайпы с событиями. Поэтому пока делфи тред не прочитает новое состояние активити, Java UI thread будет находится в режиме ожидания. Чтение в делфи потока нового состояния происходит в цикле ProcessMessage.
    Теперь возвращаясь к диалогам. Диалоги нативные, поэтому они должны быть синхронизированы (с ожиданием) с java UI thread. С другой стороны, в момент отображения диалога происходит событие из java ui thread Window Gained Focus, возникающее, когда в приложении меняется фокус между окнами (диалоговое окно в данном случае перехватывает фокус). Но как мы выяснили, это приводит к обратной синхронизации с делфи тредом.
    Отсюда возникает классический deadlock. 
    P.S. Это верно до версии Берлин включительно.
  16. Пост Brovin Yaroslav - сообщение в У меня не работает DrawBitmap был отмечен как ответ   
    Все ясно. У вас ошибка. Посмотрите внимательно на параметры функции Canvas.DrawBitmap.
    Первый прямоугольник - это область из битмапа, которую вы будите рисовать. Второй прямоугольник - это область на канве, куда вы будите выводить часть битмапа. Вот так будет правильно:
    Image1.Bitmap.Canvas.DrawBitmap(MyBitmap, MyBitmap.BoundsF, MyRect, 1); P.S. В следующие такие вопросы обязательно прикрепляйте ваш проект. Это сэкономит кучу времени на ненужные вопросы.
  17. Пост Brovin Yaroslav - сообщение в [TLabel] Почему при отключенном StyledSettings.FontColor, не меняется цвет текста в TLabel? был отмечен как ответ   
    Судя по коду в компоненте TLabel в принципе не предусмотрено явно использование в стиле TText объекта, в качестве основы стиля. 
    Другими словами, если вы в стиле для TLlabel "T1Style" перенесете TText внутрь TLayout, то у вас все будет работать.
    Мне кажется, что это бага / фича реквест.
  18. Пост Brovin Yaroslav - сообщение в цвет объекта TMemo был отмечен как ответ   
    Либо вложить TMemo в TRectangle Либо использовать выравнивание Content, а не Client
  19. Пост Brovin Yaroslav - сообщение в создание стиля на основе существующего был отмечен как ответ   
    Добрый день,
    Чтобы переименовать, нужно вбить новое имя в свойство StyleName.
  20. Пост Brovin Yaroslav - сообщение в Фильтр по типу "облака тегов" был отмечен как ответ   
    Добрый день,
    Можно взять компонент TFlowLayout с плавающей разметкой внутренних компонентов. Накидывать туда TLabel со специальным стилем и AutoSize. Там где нужен перенос вставлять TFlowLayoutBreak.
    Всплывающий список со списком, я думаю не проблема. Можно взять TPopup с TListBox. Можно просто заюзать пикеры FMX.Pickers.pas. Взять пикер TCustomListPicker
  21. Пост Brovin Yaroslav - сообщение в [TTreeView] Почему мой созданный класс от TTreeViewItem не отображается? был отмечен как ответ   
    Скорее всего просто ваш класс итема не может найти стиль. Чтобы явно указать для класса, что нужно использовать дефолтный стиль "TreeViewItemStyle", нужно перекрыть метод GetDefaultStyleLookup и вернуть "TreeViewItemStyle"
  22. Пост Brovin Yaroslav - сообщение в Чем отличаются TPath и TPathLabel ? был отмечен как ответ   
    Главные отличия:
    TPath - примитив без стиля, TPathLabel - стилизируемый TPath TPathLabel позволяет через стиль задать цвет цвет заливки пути. Это главное его отличие.
  23. Пост Brovin Yaroslav - сообщение в Как программно проверить что устройство имеет touchscrren? был отмечен как ответ   
    uses FMX.Platform; var Service: IFMXDeviceService; begin Result := TPlatformServices.Current.SupportsPlatformService(IFMXDeviceService, Service) and (TDeviceFeature.HasTouchScreen in Service.GetFeatures);  
  24. Пост Brovin Yaroslav - сообщение в Когда будет новая версия FGX? был отмечен как ответ   
    Честно говоря уже давно готова. Но нужно собрать пакет и все проверить. А пока занят курсами.
  25. Пост Brovin Yaroslav - сообщение в Можно ли как-нибудь изменить внешний вид expander был отмечен как ответ   
    Создайте свой стиль для этого компонента и сделайте его таким, каким вы хотите.
×
×
  • Создать...