Jump to content

Yaroslav Brovin

Administrators
  • Posts

    2,567
  • Joined

  • Last visited

  • Days Won

    647

Everything posted by Yaroslav Brovin

  1. Вот трекер: https://forum.fgx-native.com/tickets/opened/ Кнопка "Добавить запись"
  2. Пишите об этом. Мы постараемся это поправить или дополнить. Заводите баги в трекер. Мы сейчас больше отдаем приоритет фичам и исправлению ошибок в рантайме. Но в любом случае, баг-трекер - это способ, чтобы нам сообщить о том, что доставляет вам не удобство и не лишний повод обратить наше внимание на это. Обычно, если никто не пишет про проблемы, то может складываться ошибочное представление, что все работает, как нужно.
  3. Download: The distributive is available by request only. Release date: 29 March 2021 Bug Fixes 🐛 Closing form with TfgPageControl led to application crash (Android).
  4. Исправлено в хот фиксе 1.9.4.1.
  5. Скачать: Релиз доступен только по запросу. Дата релиза: 29 марта 2021 Исправление ошибок 🐛 Закрытие формы с TfgPageControl приводило к падению приложения (Android).
  6. Если вам удобно, то давайте. Можно скинуть в личку.
  7. Можете прикрепить стек трейс?
  8. Добрый вечер, Есть ли на этой закрываемой форме TfgPageControl?
  9. Download: The distributive is available by request only. Release date: 28 March 2021 Important notes 🚨 The work logic of TfgPageControl.OnChanged and TfgPageControl.OnPageSelected events were changed, that can break compatibility of your existing applications. Be sure to check out the details in "Improvements" -> "TfgPageControl". New ✨ TfgPushNotificationService The new component was added TfgPushNotificationService. It makes easy a using push-notifications in your application. This component takes care all work on starting service, setup connection and etc, providing special events for you. Look at the updated demo sample "Push-notification" -> "Receiving Push-notification". TfgCollectionView: The menu item styles of TfgListMenu were added to TfgCollectionView. If you do not have enough flexibility in the settings of the TfgListMenu component, you can easily use the new layouts to create a menu based on TfgCollectionView. The new styles are available in the components context menu in the "Menu" section. Other The control TfgVideoControl was implemented (iOS). FGX.PhoneDialer.TfgPhoneDialer was implemented (iOS). The setting supported application orientations was implemented (iOS). Improvements 🙌 TfgPageControl In this update, we have revised the operation of the OnChanged and OnPageSelected events. Now these events are called only when the user changes tabs interactively. Events are not triggered when you changes pages in programmatical way (adding, deleting, clearing, switching, etc.). Therefore, if you have logic that relies on constantly calling these events under any changes (interactive and programmatic), then in all places where you perform a programmatic change to tabs, you need to manually call the new method TfgPageControl.Changed, this will cause these events to be triggered immediately. There are many advantages to this approach: Protection against recursive calls. If you add/remove or change tabs, when page is switched, then such changes could lead to recursive triggering of these events, which is usually solved in the end by introducing an additional flag to track such changes. Reduce the number of calls to these events on any tab changes. Previously, any addition/deletion of a tab could trigger these events, even when it is not really necessary. Other The new demo sample was added: "Components" -> "TfgLabel" -> "Autosize" FGX-36 The new property TfgVideoControl.Volume was added (Android). Bug Fixes 🐛 FGX-24 Android 11 Stuck in splash screen (Android). FGX-33 TfgMapView continues to use location after closing form with control (Android). FGX-37 Events TfgPageControl.Changed/Selected didn't work, when user change page first time (Android). FGX-38 The event `TfgVirtualListPicker.OnChanged` is not invoked, when user taps on item. FGX-40 TfgPageControl Не вызывается событие OnChanged первый раз (Android). TfgVideoControl.Pause and Resume method didn't work correctly and reset video to the beginning (Android). SelectionColor wasn't applied for some TfgListMenuItem types.
  10. Скачать: Релиз доступен только по запросу. Дата релиза: 28 марта 2021 Внимание 🚨 Изменена логика работы событий TfgPageControl.OnChanged и TfgPageControl.OnPageSelected, что может нарушить логику работы ваших приложений. Обязательно ознакомьтесь с деталями в "Улучшения" -> "TfgPageControl". Новое ✨ TfgPushNotificationService Добавлен новый компонент TfgPushNotificationService, который облегчает использование push-уведомлений в вашем приложении. Этот компонент берет на себя всю работу по запуску сервиса push-уведомлений, настройке соединения, предоставляя пользователю специальные события для удобного приема уведомлений и т.д. Смотрите обновленный пример "Push-уведомления" -> "Получение Push-уведомления". TfgCollectionView Добавлены макеты стилей пунктов меню TfgListMenu для TfgCollectionView. Если для вас не хватает гибкости в настройках компонента TfgListMenu, то теперь вы сможете с легкостью использовать новые макеты для создания меню на базе TfgCollectionView. Новые стили доступны в контекстном меню компоненты в секции "Menu". Прочее Реализован компонент TfgVideoControl (iOS). Реализован FGX.PhoneDialer.TfgPhoneDialer (iOS). Реализовано задание поддерживаемых ориентаций приложением Application.SupportedOrientations (iOS). Улучшения 🙌 TfgPageControl В этом обновлении мы пересмотрели работу событий OnChanged и OnPageSelected. Теперь эти события вызываются только при смене вкладок пользователем интерактивным путем. События не срабатывают при любом программном изменении вкладок (добавление, удаление, очистка, переключение и т.д.). Поэтому, если у вас есть логика, которая основывается на постоянном вызове этих событий при любых изменения (интерактивных и программных), то во всех местах, где вы выполняете программное изменение вкладок, вам необходимо вызвать вручную новый метод TfgPageControl.Changed, это приведет к немедленному срабатыванию данных событий. В таком подходе есть много достоинств: Защита от рекурсивных вызовов. Если при переключении вкладок, вы выполняете добавление/удаление или изменение вкладок, то такие изменения могли приводить к рекурсивному срабатыванию этих событий, что в конечном итоге обычно решается введением дополнительного флаг на для отслеживания таких изменений. Сокращение числа вызовов этих событий на любые изменения вкладок. Раньше любое добавлении/удалении вкладки, могло приводить к срабатыванию этих событий, даже когда это реально не нужно. Прочее Добавлен новый демонстрационный проект: "Компоненты" -> "TfgLabel" -> "Автосайз". FGX-36 Добавлена возможность управлять уровнем громкости в TfgVideoControl при помощи нового свойства Volume (Android). Исправление ошибок 🐛 FGX-24 Приложение зависало на экране загрузки на устройстве Vivo с Android 11 (Android). FGX-33 TfgMapView продолжает использовать местоположение пользователя после закрытии формы (Android). FGX-37 События TfgPageControl.Changed/Selected не срабатывали при первой смене вкладок (Android). FGX-38 Не срабатывает событие TfgVirtualListPicker.OnChanged при тапе на элемент. FGX-40 TfgPageControl Не вызывается событие OnChanged первый раз (Android). Методы TfgVideoControl.Pause и Resume не корректно работали и сбрасывали воспроизведение на начало видео (Android). Для некоторых типов пунктов меню TfgListMenu не применялся цвет выделения. Детальные подробности доступны с статье:
  11. Скоро выйдет релиз 1.9.4.0 с интересными и полезными нововведениями для наших пользователей. Обо все по порядку. Push-уведомления Если вы уже использовали push-уведомления в своих приложениях, то, возможно, вы обратили внимание, что архитектура сервисов push-уведомлений в RTL с одной стороны довольно гибкая, с другой стороны требует написание определенного количество лишнего кода, которого можно было бы избежать. По этой причине мы разработали новый компонент для работы с push-уведомлениями TfgPushNotificationService. Это высокоуровневая обертка на абстракциями push-сервисов в RTL, которая облегчает работу с уведомлениями в приложении FGX Native. Для того, чтобы начать принимать push-уведомления в вашем приложении достаточно: Выполнить первичную настройку сервисов (Firebase для Android или Apple Push Notification Service для iOS). Бросить компонент на форму и написать обработчик для события OnPushNotificationReceived, которое вызывается при приеме уведомления. Это минимальный набор шагов, который для этого требуется. Если вам необходимо добавить диагностическую информацию, получить токен устройства и тд, то вы можете воспользоваться остальными событиями этого компонента. ServiceName - это название сервиса push-уведомлений, которые реализован в библиотеке. "fcm" - сервис по приему уведомлений через Firebase (Android) "aps" - сервис по приему уведомлений через Apple Push Notification Service (iOS). "Default" - автоматический выбор сервиса в зависимости от текущей платформы. Для Android - "fcm", для iOS - "aps". Мы обновили демо проект по использованию push-уведомлений: "Push-уведомления" -> "Получение Push-уведомления". Помимо этого мы полностью отладили реализацию Push-уведомлений для iOS и теперь вы можете использовать ее в своих приложениях. TfgPageControl (важно!) В этом обновлении мы пересмотрели работу событий OnChanged и OnPageSelected. Теперь эти события вызываются только при смене вкладок пользователем интерактивным путем. События не срабатывают при любом программном изменении вкладок (добавление, удаление, очистка, переключение и тд). Поэтому, если у вас есть логика, которая основывается на постоянном вызове этих событий при любых изменения (интерактивных и программных), то во всех местах, где вы выполняете программное изменение вкладок, вам необходимо вызвать вручную новый метод TfgPageControl.Changed, это приведет к немедленному срабатыванию данных событий. В таком подходе есть много достоинств: Защита от рекурсивных вызовов. Если при переключении вкладок, вы выполняете добавление/удаление или изменение вкладок, то такие изменения могли приводить к рекурсивному срабатыванию этих событий, что в конечном итоге обычно решается введением дополнительного флаг на для отслеживания таких изменений. Сокращение числа вызовов этих событий на любые изменения вкладок. Раньше любое добавлении/удалении вкладки, могло приводить к срабатыванию этих событий, даже когда это реально не нужно. TfgCollectionView и TfgListMenu Очень часто вы задавали вопросы о том, как детальнее настроить работу компонента TfgListMenu. В релизе 1.9.0.0 мы добавили ряд настроек для управления цветовой схемой данного компонента. А для тех, кому и этого не хватает, мы специально мигрировать все шаблоны стилей пунктов меню из TfgListMenu в TfgCollectionView. Новые шаблоны доступны в контекстном меню компонента TfgCollectionView -> Add Style -> Menu. Все стили приведены на скриншоте ниже: TfgVideoControl В этом релизе мы добавили реализацию данного компонента для iOS и добавили возможность регулировать громкость видео через новое свойство TfgVideoControl.Volume. TfgPhoneDialer Мы так же реализовали TfgPhoneDialer для iOS. Всем спасибо за внимание и хороших выходных .
  12. Добрый вечер, У нас переехал багтрекер: https://forum.fgx-native.com/tickets/ Я создал тикет:
  13. Добрый день, Оформите, пожалуйста, ваш вопрос в разделе https://forum.fgx-native.com/forum/21-tfglabel/ , чтобы ответ не потерялся. Спасибо
  14. Добрый день, Извиняюсь. Когда просматривал все текущие ошибки в баг-трекере эту там не нашел, а здесь не обратил в нее. Постараюсь ее поправить в хотфиксе. P.S. На будущее, пишите, пожалуйста, ошибки в трекер, а не в любые другие места. Спасибо
  15. Download: The distributive is available by request only. Release date: 14 March 2021 Important notes Now color action buttons TfgNavigationBar depends on color TfgNavigationBar.ButtonsOptions.IconTintColorName. Now events TfgPageControl.OnChanged, TfgPageControl.OnPageSelecting, TfgPageControl.OnPageSelected are no longer triggered when the component is being created. Now events TfgComboBox.OnChanged, TfgComboBox.OnItemSelected are no longer triggered when the component is created. New ✨ The new tools for generating Delphi wrappers for usage Java API was added. Improvements 🙌 Android service Now, when you build FGX Native application with Android Service, IDE copies two patched files to project folder System.Android.Service.dcu and System.Android.Service.o, which are required for correct working Android services in FGX Native application. The new helper for getting Android service was added TfgAndroidHelper.Service (Android). Other The new demo sample about usage auto wrap components was added: "Alignment" -> "Automatic transfer of components by row". The broadcasting screen notification messages were implemented for screen parameter changes, connecting and removing screens (iOS). Bug Fixes 🐛 FGX-17 Fixed working with application images (iOS). FGX-19 TfgCollectionView.OnScroll doesn't work on iOS. FGX-20 Changing page in TfgPageControl via code (GotoPage) doesn't invoke OnChanged event on (iOS). FGX-21 ScrollBottom doesn't workk in TfgScrollBox (Android) FGX-22 Translation in Design Time. Crash barcode scanner on form destruction (Android). FGX-25 Assets Manager: import issues with material.io. FGX-26 The color of the action buttons on the navigation bar text. Restoring the original tint icon More Image when resetting tint color TfgNavigationBar.ButtonsOptions.IconTintColorName (Android). FGX-29 Usage TLocalServiceConnection.StartService doesn't work (Android). FGX-32 When TfgToast is hidden, application is crashed in RAD Studio 10.3 (iOS). The displaying TfgToasts on device with landscape orientation was fixed (iOS). FGX-31 Does not work TfgLine.Stroke.Cap (Dash=Dot). FGX-23 fgPageControl. Order of events. FGX-27 TfgComboBox. how to disable event onChanged.
  16. Скачать: Релиз доступен только по запросу. Дата релиза: 14 марта 2021 Внимание! Теперь цвет экшен кнопок TfgNavigationBar зависит от цвета TfgNavigationBar.ButtonsOptions.IconTintColorName. Теперь события TfgPageControl.OnChanged, TfgPageControl.OnPageSelecting, TfgPageControl.OnPageSelected не вызываются при создании компонента. Теперь события TfgComboBox.OnChanged, TfgComboBox.OnItemSelected не вызываются при создании компонента. Новое ✨ Добавлена утилита генерации Delphi оберток для использования Java классов Улучшения 🙌 Андроид сервисы Теперь при сборке приложения, использующего Андроид сервис, среда автоматически добавляет в корень проекта два пропатченных файла System.Android.Service.dcu и System.Android.Service.o необходимые для корректной работы Андроид сервисов в FGX Native приложении. Добавлен хелпер для получения экземпляра Андроид сервиса TfgAndroidHelper.Service (Android). Прочее Добавлен пример по выполнению автоматического переноса компонентов на новую строчку: "Выравнивание" -> "Автоматический перенос компонентов по строкам" Реализована широковещательная рассылка уведомлений при изменении параметров экранов, подключении и отключении (iOS). Исправление ошибок 🐛 FGX-17 Ошибка публикации в apple Store (iOS). FGX-19 TfgCollectionView.OnScroll не работает (iOS). FGX-20 Изменение страницы в TfgPageControl с помощью кода (GotoPage) не вызывает событие OnChanged на (iOS). FGX-21 Не работает ScrollBottom в TfgScrollBox (Android). FGX-22 Проблемы английской локализации в IDE. Падение сканера баркодов при разрушении формы (Android). FGX-25 Assets Manager: проблемы импорта с material.io. FGX-26 Цвет текста кнопки действия на панели навигации (Android). Восстановление оригинального оттенка иконки More Image при сбросе акцентного цвета TfgNavigationBar.ButtonsOptions.IconTintColorName (Android). FGX-29 Usage TLocalServiceConnection.StartService doesn't work (Android). FGX-32 При скрытии TfgToast падает приложение в RAD Studio 10.3 (iOS). Исправлено отображение тоста в горизонтальной ориентации устройства (iOS). FGX-31 Не работает TfgLine.Stroke.Cap (Dash=Dot). FGX-23 TfgPageControl последовательность событий (Android). FGX-27 TfgComboBox как отключить событие OnChanged.
  17. В ближайшие дни выйдет новый релиз библиотеки FGX Native 1.9.3.0, главной новинкой которой будет утилита командной строки для генерации заголовочных файлов Delphi для использования Java API /Android API. Утилита располагается в каталоге "$(FGX)\Tools\Java2Delphi" и в ее состав входят: Java2Delphi.exe - утилита. config.template.json - Шаблон конфигурационного файла, в котором указаны правила формирования итоговых Delphi-модулей. api-versions.android-28.xml - Файл с информацией об Android API 28 версии. UsedGUID.txt - набор использованных GUID значений для Delphi интерфейсов. run.bat - пакетный файл для запуска утилиты в любом месте. Перед первым применением необходимо выполнить настройку утилиты. Настройка Управление утилитой идет при помощи конфигурационного json-файла, передаваемого через аргументы командной строки. Перед первым применением, необходимо: 1. Создать каталог в любом месте, где будут размещены все результаты генерации. 2. Скопировать файл "run.bat" в каталог (1). 3. Скопировать конфигурационный шаблон "config.template.json" в каталог (1) и назвать его "config.json" (название может быть любым). 4. Отредактировать базовые настройки Java окружения: "javap": "$(JAVA_HOME)\\bin\\javap.exe", "jar": "$(JAVA_HOME)\\bin\\jar.exe", Java2Delphi использует две утилиты командной строки из Java SDK: "javap.exe" и "jar.exe". По умолчанию она использует переменную окружения $(JAVA_HOME). Если она у вас указана в Windows, то этот шаг можно пропустить. Если нет, то либо необходимо добавить ее с указанием местоположения Java JDK: или напрямую указать пути к требуемым утилитам. 5. Указываем пути, куда будут помещены результаты генерации (опционально). "outputDir": ".\\Headers", "signatureOutputDir": ".\\Signatures", outputDir - каталог, куда будут помещены pas файлы с необходимыми обертками Java/Android Api. signatureOutputDir - вспомогательный каталог, куда будут помещены вспомогательные файлы с сигнатурами Java классов. После выполнения первичной настройки файла конфигурации, приступим теперь к указанию, какие Java классы надо транслировать. Правила генерации файлов Для того, чтобы сгенерировать заголовочные файлы необходимо указать: Jar-библиотеки, которые содержат необходимые Java классы. Указать требуемые для перевода Java классы. Указать, в какие Delphi модули разместить результирующие обертки. 1. Указываем нужные jar библиотеки. Библиотеки указываются в секции jars: "jars": [ "E:\\Development\\Android\\platforms\\android-28\\android.jar" ], По умолчанию, мы всегда подключаем jar библиотеку Android (по-этому не удаляйте ее, если хотите совместимости с Android API). Вам необходимо откорректировать расположение данного файла с учетом вашей системы. 2. Указываем требуемые для перевода Java классы. Теперь мы должны сказать утилите в секции "classes", какие классы нас интересуют в этих библиотеках. Здесь необходимо использовать полное название Java типов с учетом названия пакета: "classes": [ "java.lang.Object", "java.lang.CharSequence", "java.lang.String", "java.lang.Class", "java.lang.Boolean", "java.lang.Number", // Можно использовать * на конце пакета, чтобы выбрать все классы в данном пакете "android.provider.*", "android.view.animation.Animation", "android.view.animation.Animation.AnimationListener", "android.view.animation.Animation.Description", // и тд По умолчанию шаблон включает в себя все классы из Android API, которые используются в FGX Native. Поэтому не удаляйте эти классы, если вы хотите получить заголовочные файлы, совместимые с уже существующими хедерами в FGX Native. Добавьте сюда те, которые вас интересуют. Поскольку в некоторых библиотеках могут быть 1000 классов. То обработка такого количества классов займет много времени. Помимо этого, вы получите гигантских размеров заголовочные файлы. Поэтому лучше добавлять только те классы, которые вам реально нужны для вызовов, а не все. 3. Указываем правила генерации Delphi модулей. После того, как мы перечислили интересуемые нас Java классы, нам остается только указать, в какие Delphi модули их следует поместить. Это делается через "output": "output": [ { "name": "Android.Api.Text", // Название Делфи модуля Android.Api.Text.pas "uses": [ // Подключаемые Делфи модули в Android.Api.Text.pas "Android.Api.JavaTypes", "Android.Api.ActivityAndView" ], "classes": [ // Java классы, обертки над которыми будут добавлены в Android.Api.Text.pas "android.text.*" ], "exclude": [ // Опционально, можно исключить некоторые классы "android.text.method.*", "android.text.util.*", "android.text.ClipboardManager*" ] } ] Генерация Поздравляю, теперь вы можете запустить утилиту и наблюдать, как она трудится формируя заголовочные файлы по вашим правилам. Обратите внимание, что первый запуск занимает много времени, так как утилита генерирует сигнатуры Java классов (именно они используются для анализа структуры Java классов) и помещает их в каталог "signatureOutputDir". Однако, последующие запуски будут выполняться моментально, за счет того, что утилита не выполняет повторную генерацию сигнатур, если она уже есть. Не удаляйте файлы сигнатур, они помогут ускорить повторную генерацию заголовочных файлов. Разбор пропущенных классы/методов/полей В процессе генерации утилита выполняет много сложной работы с анализом зависимостей, доступных типов и тд. Если какой-то из Java типов не указан в секции "classes", то утилита пропустит все его использования. При этом она сообщит об этом через лог. Например: При генерации класса android.text.HTML были пропущены два метода fromHTML (они не попали в pas файлы), потому что не был указан тип android.text.Html$ImageGetter. Skipped members of the Java type: android.text.Html Methods: - fromHtml(const AArg0: JString; const AArg1: Integer; const AArg2: JHtml_ImageGetter; const AArg3: JHtml_TagHandler): JSpanned; [android.text.Html$ImageGetter] - fromHtml(const AArg0: JString; const AArg1: JHtml_ImageGetter; const AArg2: JHtml_TagHandler): JSpanned; [android.text.Html$ImageGetter] Если вам нужны эти методы, то необходимо в секцию classes добавить этот тип: "classes": [ "android.text.Html.ImageGetter", Обратите внимание, что в Java "$" - это разделитель для вложенных классов. Однако в конфигурационном файле вместо него надо использовать ".".
  18. Добрый вечер, Мы обязательно проверим все и исправим в следующем релизе 1.9.3.0. Здесь точно ничего не менялось и с вероятностью 99% это ложное ощущение. Если есть пример, где это видно, то скидывайте, я проверю.
  19. Hello, Thank you for information, We will fix it in the next release. Thank you
  20. Добрый день, Мы выложили запись прошедшего 18 февраля вебинара по теме "Пробная сессия вопросов и ответов по FGX Native". Видео доступно на нашем YouTube канале. На вебинаре обсуждались следующие темы: Android SDK/NDK; Сервисы локации; Асинхронная загрузка изображений в списках; Планы на ближайшие релизы.
  21. Download: The distributive is available by request only. Release date: 18 February 2021 Bug Fixes 🐛 The event TfgListMenu.OnTapItem didn't work (iOS).
  22. Скачать: Релиз доступен только по запросу. Дата релиза: 18 февраля 2021 Исправление ошибок 🐛 Не работало событие TfgListMenu.OnTapItem (iOS).
×
×
  • Create New...