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

Brovin Yaroslav

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

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

  • Посещение

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

    390

Весь контент Brovin Yaroslav

  1. В новой версии студии RAD Studio Berline, дизайнер стилей TStyleBook теперь показывает эти два свойства для каждого стилевого компонента. Таким образом открыв стиль в TStyleBook, вы можете сбросить значения этих свойств для снятия ограничений. Или же поменять их на свои. Без ручных правок текстового вида стиля.
  2. Brovin Yaroslav

    Serial port

    Появилась с версии XE7.
  3. В новой версии студии RAD Studio Berline, дизайнер стилей TStyleBook теперь показывает эти два свойства для каждого стилевого компонента. Таким образом открыв стиль в TStyleBook, вы можете сбросить значения этих свойств для снятия ограничений. Или же поменять их на свои.
  4. Сразу не могу вам ответить. Но могу предположить, что итем умеет отображать не только текст и имеет возможность различных вариантов расположения отображаемых данных. Именно по этому и нельзя заранее знать, какой способ вы будите использовать.
  5. Вот пример вычисления высоты итема. ListViewVariableHeightItems2.zip Я этот пример показывал на лонче в питере.
  6. Как это не зависит? ScrollBar1.ViewportSize := 50; ScrollBar1.Max := 200; В итоге ползунок по ширине равен 1/4 ширины скроллбара.
  7. Либо вы можете напрямую использовать posix таймеры timer_create
  8. function AndroidTimerCreate: Integer; Создает таймер и возвращает его идентификатор procedure AndroidTimerSetInterval(TimerHandle: Integer; Interval: Integer); Задает для созданного таймера по его ID интервал срабатывания. Эта реализация работает с одним обработчиком OnTimer для всех таймеров. Чтобы задать такой общий обработчик используется процедура: procedure AndroidTimerSetHandler(OnTimer: TAndroidTimerNotify); В параметре OnTimer приходит ваш идентификатор таймера. procedure AndroidTimerDestroy(TimerHandle: Integer); Этот метод уничтожает созданный вами таймер по ID Этот юнит - это оболочка над posix-таймерами
  9. Тогда: или воспользуйтесь DisposeOf. Либо проверьте счетчик ссылок после вашего "удаления".
  10. Если хотите хранить настройки и их не много, то используйте TForm.OnSaveState Если данных много (табличной структуры), то SQLLite
  11. Мобильные платформы? В мобильной платформе, нужно занилить еще указатель Edit := nil Иначе у вас счетчик ссылок на этот компонент будет больше 0. и Объект не удалится, а только пропадет с формы.
  12. Посмотрите на реализацию системных таймеров в Androidapi.Timer.pas. Они подходят для сервисов.
  13. uses FMX.Platform; var Service: IFMXDeviceService; begin Result := TPlatformServices.Current.SupportsPlatformService(IFMXDeviceService, Service) and (TDeviceFeature.HasTouchScreen in Service.GetFeatures);
  14. Версия Log из FMX работать не будет, так как она построена на FMX сервисах (TPlatformServices), которые в андроид сервисах не работают. Поэтому пользуйтесь версией андроида LOGI, LOGW, LOGE.
  15. В любом, но до использования апи.
  16. Поскольку ios библиотеки с апи подкгружаются динамически. Эта ошибка может означать, что реально на момент обращения фреймворк "CoreTelephony.framework" не был загружен. Загрузка обычно делается в каждом rtl iosapi юните так: const libAddressBook = '/System/Library/Frameworks/AddressBook.framework/AddressBook'; {$IF defined(IOS) and NOT defined(CPUARM)} initialization AddressBookModule := dlopen(MarshaledAString(libAddressBook), RTLD_LAZY); finalization dlclose(AddressBookModule); {$ENDIF IOS} end. Я действительно не вижу в iOSapi.CoreTelephony.pas кода по загрузке библиотеки. Поэтому вы можете добавить код выше в свой проект для форсирования загрузки, изменив libAddressBook на: const CoreTelephonyFwk: string = '/System/Library/Frameworks/CoreTelephony.framework/CoreTelephony';
  17. Этот стек может быть реакцией на программное закрытие дровера. Так как событие вызывается в конце анимации. Поэтому в стеке вы вряд ли увидите ваш код.
  18. У вас не используются отдельные представления VIew для планшетной версии андроида?
  19. Я понимаю, работа с текстом вообще по-моему должна быть пересмотрена, так как не дает нужной гибкости и порождает потенциальные проблемы. P.S. Я заведу сегодня багу.
  20. Я сообщил человеку, занимающимся текстом, об этой проблеме. Будет разбираться. Если будет новая информация, я вам ее передам.
  21. CancelNotification - снимает с очереди отложенное уведомление. Например, вы решили поставить напоминание о том, чтобы что-либо сделать в 10:00 утра следующего дня. Затем у вас поменялись планы до этого времени, и вы решили отменить напоминание. Для этих целей вы и можете воспользоваться CancelNotification. Параметр AName - это имя уведомление, указываемое в TNotification.Name. Это имя является обязательном только для случае желания отменить это уведомление в будущем.
  22. У меня на пустом проекте не удается добиться двойного срабатывания. Проверьте, пожалуйста, это поведение на чистом проекте с одним TMultiView. Возможно, вы где-то в коде что-то вызываете, что приводит к двойному срабатыванию.
  23. Для какого режима TMultiView.Mode? Только что проверил, срабатывает один раз и на Windows и на Android для режима Drawer (Overlap)
  24. Если интересует определение момента полного закрытия TMultiView, то смотрите событие: OnStartHiding - начинает закрываться OnHidden - компонент закрылся OnStartShowing - начинает открываться OnShown - компонент открылся
  25. Хорошая практика использования TNotificationCenter - это уведомление пользователя о событиях, когда ваше приложение свернуто или скрыто. Как только ваше приложение открыто, то считается, что пользователь прочитал в шторке о вашем сообщение и дальнейшая работа должна идти в своем приложении. Кстати, пара любопытных моментов. Если приложение открыто в iOS, то в шторке визуально не будет появляться ваше уведомление сверху в статус баре. iOS не позволяет удалить уведомление по одному, только все.
×
×
  • Создать...