-
Posts
2,567 -
Joined
-
Last visited
-
Days Won
647
Content Type
Profiles
Forums
Events
Store
Blogs
Posts posted by Yaroslav Brovin
-
-
Hello @Angel,
The first as I mentioned before this components depends on FMX, so they will not work in FGX Native. Now it is clearly visible by opening almost any module of this library. FMX is used everywhere.* modules.
The second we are providing trial for testing purposes. One of the goal is a testing compatibility with 3-d party components. You can check any components in FGX Native project.
Thank you.
-
1 hour ago, Alex O said:
Стесняюсь спросить, но что означает: возможность прокрутки списка интерактивным способом?
Значит пальцем. Обычно есть два способа:
- Программным. Когда программист при вызове метода выполняет какое-то взаимодействие пользователя (например, прокрутка)
- Интерактивное. Пользователь пальцем взаимодействуя с компонентом заставляет его крутиться.
1 hour ago, dervish00 said:а у меня вопрос такой: можно ли в рантайме менять провайдера рекламы в зависимости от страны? к сожалению, проверить не могу, т.к. ключ активации последний не подходит, жду нового (((
Можно использовать два разных провайдера рекламы и переподключать их на лету. Однако, нужно иметь в виду, что AdMob требует указания ключа на уровне андроид манифеста. Поэтому AdMob всегда будет инициализироваться.
1 hour ago, dervish00 said:Можно использовать один провайдер в приложении. У провайдера связь один ко многим.
Это формулировка говорит о том, что можно использовать один провайдер для всех компонентов баннеров и полностраничной рекламы.
- 1
-
Download:
The distributive is available by request only.Release date:
1 June 2023
Warning 🚨
1. The architecture of advertising components were refactored, so now it supports different adv providers (not only AdMob). In case if you are using components TfgBannerAd or TfgInterstitialAd, you have to do follow steps:
- Put on form new component TfgGoogleAdMobProvider, where you use TfgBannerAd or TfgInterstitialAd componsnts. The one instance TfgGoogleAdMobProvider can be used in all components.
- Link TfgBannerAd and TfgInterstitialAd with provider via Provider property.
If you don't do this steps, than advertising will not be displayed in runtime.
2. There was a renaming of two types used for TfgPickerPhoto:
- TfgPickerPhotoSource replaced by TfgPickerMediaSource
- TfgPhotoFiles replaced by TfgMediaFiles
Please update the declarations if you use these types directly in your projects.
New ✨
TfgRegionPicker
The new component was developed for interactive selecting rectangle region.
TfgBannerAd and TfgInterstitialAd
The ad placement components have been refactored, as a result of which different advertising providers (Google AdMob, Yandex Mobile Ads) are now supported.
Previously, the advertising platform Google AdMob was integrated directly into the components TfgBannerAd and TfgInterstitialAd. Now we have separated the advertising provider into separate components TfgGoogleAdMobProvider called the advertising provider. And the components TfgBannerAd and TfgInterstitialAd simply use information from the provider. Therefore, now to use advertising, it is necessary to use the provider of the required advertising platform and link it with the components TfgBannerAd and TfgInterstitialAd. You can use one provider per application. The provider has a one-to-many connection.
Yandex Mobile Ads
We added support for advertising in the "banner" and "full-page advertising" format from the Yandex Mobile Ads advertising platform. A new provider TfgYandexMobileAdsProvider has been developed.
Currently, the advertising components are implemented only for Android.- Added a new demo example: "Components" -> "TfgBannerAd" -> "Example of displaying an advertising banner (Yandex Mobile Ads)"
Setup on Android
In order to use the mobile version of Yandex, you need to add "com.yandex.android:mobileads:5.7.0" in the application settings "Project" -> "FGX Native Android Libraries".
Crop, preview and other helpers for TfgBitmap
The new unit FGX.Bitmap.Helpers was added. It expands features of TfgBitmap and adds additional transformation methods: Crop and Thumbnail.
TfgBitmapHelper = class helper for TfgBitmap public {$REGION 'Creating new bitmaps'} /// Create thumbnail image, which can be used for preview. The image is fit into specified size with saving aspect ration. /// If the specified zize is zero, the method raises exception. function CreateThumbnail(const ASize: TSize): TfgBitmap; /// Creates new cropped image from specified region. ARegion - physical coordinates of region. function CreateCroppedBitmap(const ARegion: TRect): TfgBitmap; /// Creates new bitmap and apply specified tint color. function CreateTinted(const ATintColor: TAlphaColor): TfgBitmap; /// Creates new bitmap and rotate it on specified angle. function CreateRotated(const AAngle: TfgRotation): TfgBitmap; {$ENDREGION} {$REGION 'Transformation'} /// Crops bitmap by specified region. ARegion - physical coordinates of region. /// If region coordinates ARegion are bigger than bitmap bounds, then region size is cropped by bitmap bounds. /// If the specified zize is zero, then result bitmap became empty. procedure Crop(const ARegion: TRect); {$ENDREGION} end;
To use the new methods, you need to add the FGX.Bitmap.Helpers to the uses section and call new methods on the instance of TfgBitmap.
Exif
The new service for extracting Exif meta-information. To request Exif information, you need to use the class FGX.Exif.TfgExif. A typical usage example looks like this:
uses FGX.Exif; var Properties: TfgExifProperties; if TfgExif.TryLoad(AFileName, Properties) then begin // Properties.Rotation; end;
Rotate gesture
The supporting of Rotation gesture was added. You should do follow for usage new gesture recognizer:
- Include Rotate: GestureKinds = GestureKinds + TGestureKind.Rotate
- Add TfgControl.OnRotate event handler.
Argument of TfgControl.OnRotate includes usefull values about rotation:
/// <summary>Initial coordinates of first finger (<c>Phase = TfgGesturePhase.Begin</c>).</summary> /// <remarks>In Local coordinate system of control.</remarks> InitialPoint1: TPointF; /// <summary>Initial coordinates of second finger (<c>Phase = TfgGesturePhase.Begin</c>).</summary> /// <remarks>In Local coordinate system of control.</remarks> InitialPoint2: TPointF; /// <summary>Current coordinates of first finger.</summary> /// <remarks>In Local coordinate system of control.</remarks> Point1: TPointF; /// <summary>Current coordinates of second finger.</summary> /// <remarks>In Local coordinate system of control.</remarks> Point2: TPointF; /// <summary>Current delta angle related to initial in counterclockwise (in degrees).</summary> DeltaAngle: Single; /// <summary>Curren gesture phase.</summary> Phase: TfgGesturePhase;
TfgPickerVideo
Added video file picker. You can select one or more video files from the gallery (TfgPickerVideoFactory.PickVideoFromLibrary, TfgPickerVideoFactory.PickVideosFromLibrary), as well as record your own video using the system interface (TfgPickerVideoFactory.PickVideoFromCamera).
When recording a video, it is possible to specify the maximum video duration in seconds (TfgPickerVideo.DurationLimit).Warning: This option is not guaranteed to work on Android, as directly depends on the camera vendor.
TfgCalendar
Added implementation for iOS.
Improvements 🙌
TfgDrawerLayout
The new property SwipeEnabled was added. It's responsible for disabling sliding drawer by interactive way. Use it instead of Enabled.
TfgCollectionView
The new property ScrollEnabled was added. It's responsible for list scrolling by interactive way.
SVG
Improved support for SVG files:
- Added recognition of gradient point parameters via style (Attribute Style).
- Added predictive reading of gradients and styles after using them directly.
- Added support for using ',' as a separator in the assignment of transformation matrices.
Bug Fixes 🐛
- Excluding gestures from GestureKinds didn't work (iOS).
- The usage of TfgLabel.FocusControl could lead to application crash in some cases.
- FGX-270 TfgLabel.OnTap didn't work (Android).
- FGX-271 In case of embedding form, TfgCollectionView could automatically turn on PullToRefresh (Android).
- The display of TfgPage was fixed on HiDPI screens in IDE.
- In case of usage TfgNavigationBar.Style = Translucent control disables shadow.
- 1
-
Скачать:
Релиз доступен только по запросу.Дата релиза:
1 июня 2023
Внимание 🚨
1. Выполнен рефакторинг компонентов размещения рекламы, в результате чего теперь поддерживаются разные поставщики рекламы (Помимо Google AdMob). Если вы используете в своих проектах компоненты TfgBannerAd или TfgInterstitialAd, то вам необходимо выполнить следующие действия:
- Разместить на форме, где вы используете TfgBannerAd или TfgInterstitialAd, новый компонент TfgGoogleAdMobProvider. Достаточно одного экземпляра на все.
- Связать TfgBannerAd и TfgInterstitialAd с компонентом при помощи свойства Provider.
Если не выполнить эти шаги, то в рантайме реклама не будет отображаться.
2. Произошло переименование двух типов, используемых для TfgPickerPhoto:
- fgPickerPhotoSource заменен на TfgPickerMediaSource
- fgPhotoFiles заменен на TfgMediaFiles
Пожалуйста, обновите декларации, если вы используете в своих проектах данные типы напрямую.
Новое ✨
TfgRegionPicker
Разработан новый компонент для осуществления интерактивного выбора области.
Реклама TfgBannerAd и TfgInterstitialAd
Выполнен рефакторинг компонентов размещения рекламы, в результате чего теперь поддерживаются разные поставщики рекламы (Google AdMob, Yandex Mobile Ads).
Раньше рекламная площадка Google AdMob была интегрирована прямо в компоненты TfgBannerAd и TfgInterstitialAd. Сейчас же мы выделили поставщика рекламы в отдельные компоненты TfgGoogleAdMobProvider называемый провайдером рекламы. А компоненты TfgBannerAd и TfgInterstitialAd просто используют информацию от провайдера. Поэтому теперь для использования рекламы необходимо использовать провайдер требуемой рекламной площадки и связать его с компонентами TfgBannerAd и TfgInterstitialAd. Можно использовать один провайдер в приложении. У провайдера связь один ко многим.
Реклама Yandex Mobile Ads
Добавлена поддержка рекламы в формате "баннер" и "полностраничная реклама" от рекламной площадки Yandex Mobile Ads. Разработан новый провайдер TfgYandexMobileAdsProvider.
На текущий момент компоненты рекламы реализованы только для Android.- Добавлен новый демо-пример: "Компоненты" -> "TfgBannerAd" -> "Пример отображения рекламного баннера (Yandex Mobile Ads)"
Настройка для Android
Для того, чтобы использовать Yandex Mobile Ads необходимо добавить зависимость "com.yandex.android:mobileads:5.7.0" в настройках библиотек "Project" -> "FGX Native Android Libraries".
Обрезка, превью и другие хелперы для TfgBitmap
Добавлен новый модуль FGX.Bitmap.Helpers, расширяющий возможности TfgBitmap и добавляющий дополнительные методы по трансформации и редактированию битмапа: вырезание области (Crop), создание превью (Thumbnail).
TfgBitmapHelper = class helper for TfgBitmap public {$REGION 'Creating new bitmaps'} /// <summary> /// Создает миниатюрное изображение, которое может использовать в виде превью. Изображение вписывается в /// указанный размер с сохранение пропорций и центрируется. /// </summary> /// <remarks>Если передается нулевой размер, то метод поднимает исключение.</remarks> function CreateThumbnail(const ASize: TSize): TfgBitmap; /// <summary> /// Создает новое изображение сформированное из указанной области. <c>ARegion</c> - физические координаты области. /// </summary> function CreateCropped(const ARegion: TRect): TfgBitmap; /// <summary>Создает новое изображение и применяет указанный оттенок.</summary> function CreateTinted(const ATintColor: TAlphaColor): TfgBitmap; /// <summary>Создает новое изображение и поворачивает его на указанный угол.</summary> function CreateRotated(const AAngle: TfgRotation): TfgBitmap; {$ENDREGION} {$REGION 'Transformation'} /// <summary>Выполняет вырезание указанной области изображения. <c>ARegion</c> - физические координаты области.</summary> /// <remarks> /// <para> /// Если координаты области <c>ARegion</c> выходят за пределы физического размера изоюбражения, то они отсекаются /// по размеру изображения. /// </para> /// <para> /// Если результирующая область имеет нулевой размер, то текущий битмап принимает нулевой размер. /// </para> /// </remarks> procedure Crop(const ARegion: TRect); /// <summary>Симметричное отражение изображения по горизонтальной оси.</summary> procedure FlipHorizontal; /// <summary>Симметричное отражение изображения по вертикальной оси.</summary> procedure FlipVertical; {$ENDREGION} end;
Чтобы воспользоваться новыми методами, необходимо подключить в секцию uses модуль FGX.Bitmap.Helpers и вызывать новые методы на экземпляре TfgBitmap.
Exif
Добавлен новый сервис для получения мета информации Exif. Чтобы запросить Exif информацию нужно воспользоваться классом FGX.Exif.TfgExif. Типовой пример использования выглядит так:
uses FGX.Exif; var Properties: TfgExifProperties; if TfgExif.TryLoad(AFileName, Properties) then begin // Properties.Rotation; end;
Жест поворота
Добавлена поддержка нового жеста поворота. Для того, чтобы воспользоваться жестом нужно:
- Включить его через свойство GestureKinds = GestureKinds + TGestureKind.Rotate
- Написать обработчик TfgControl.OnRotate.
В параметрах события TfgControl.OnRotate передается информация о текущем повороте:
TfgRotateInfo = record /// <summary>Первоначальные координаты первого пальца (<c>Phase = TfgGesturePhase.Begin</c>).</summary> /// <remarks>Указывается в локальных координатах контрола.</remarks> InitialPoint1: TPointF; /// <summary>Первоначальные координаты второго пальца (<c>Phase = TfgGesturePhase.Begin</c>).</summary> /// <remarks>Указывается в локальных координатах контрола.</remarks> InitialPoint2: TPointF; /// <summary>Текущие координаты первого пальца.</summary> /// <remarks>Указывается в локальных координатах контрола.</remarks> Point1: TPointF; /// <summary>Текущие координаты второго пальца.</summary> /// <remarks>Указывается в локальных координатах контрола.</remarks> Point2: TPointF; /// <summary>Текущий угол поворота относительно начального (В градусах).</summary> DeltaAngle: Single; /// <summary>Текущая фаза жеста.</summary> Phase: TfgGesturePhase; function ToString: string; end;
TfgPickerVideo
Добавлен пикер видео файлов. Вы можете выбрать один или несколько видео файлов из галереи (TfgPickerVideoFactory.PickVideoFromLibrary, TfgPickerVideoFactory.PickVideosFromLibrary), а так же снять свое видео используя системный интерфейс (TfgPickerVideoFactory.PickVideoFromCamera).
При съемке видео есть возможность указать максимальную длину видео в секундах (TfgPickerVideo.DurationLimit).
Внимание: На Android работа данной опции не гарантируется, т.к. напрямую зависит от поставщика камеры.
TfgCalendar
Добавлена реализация для iOS.
Улучшения 🙌
TfgDrawerLayout
Добавлено новое свойство SwipeEnabled, которое отвечает за возможность выдвижения/задвигания панели интерактивным способом. Используйте это свойство вместо Enabled.
TfgCollectionView
Добавлено новое свойство ScrollEnabled, которое отвечает за возможность прокрутки списка интерактивным способом.
SVG
Улучшение поддержки SVG файлов:
- Добавлено распознавание параметров точек градиента через стиль (Атрибут Style).
- Добавлено предиктивное чтение градиентов и стилей после непосредственного использования таковых.
- Добавлена поддержка использования ',', как разделителя в задании матриц трансформации.
Исправление ошибок 🐛
- Не работало программное отключение жестов (iOS).
- Использование TfgLabel.FocusControl могло приводит к падению приложения в определенных случаях.
- FGX-270 Не срабатывает событие TfgLabel.OnTap (Android).
- FGX-271 При встраивании формы мог автоматически включаться PullToRefresh (Android).
- Исправлено отображение вкладки TfgPage в дизайнере на HiDPI экранах при использовании оттенка для Android стиля.
- При использовании TfgNavigationBar.Style = Translucen теперь отключается тень.
- 7
-
Hello @Robson Rodrigues,
Some 3-d party components spoils system Path variable value in IDE. It doesn't let to IDE loads all required dll and packages. So please, check it first:
IDE Main Menu -> Tools -> Options -> IDE -> Enviroument Variables
Look at the PATH variable in "User System Overrides". Please send me this value here. If this variable has value it should contains "$(PATH);"
-
See demo sample: "Components" -> "TfgCollectionView" -> "Items aspect ratio"
-
- We have App Payments implementation in FGX Native: TfgInAppPurchase, TfgAndroidPay and TfgApplePay (not tested yet, but implemented).
- We have implementation for AdMob (banner and Interstitial) for Android.
- If you need working with AdMobStorage, you can use free FB4D components https://github.com/SchneiderInfosystems/FB4D/tree/master/Source It's compatible with FGX Native.
16 minutes ago, Angel said:Another question, CollectionView is AutoSize (Height and Width)?
This question requires more clarification on your part. If we are talking about automatic list size, then no.
-
Hello @Angel,
I'm not able to download any demo samples from JVESuite. However, I guess it's not compatible with FGX Native because:
-
The site points on components for FMX
- Component set includes several visual controls, label for example. But visual components always linked to some visual framework.
What components are you interesting in from this set?
Thank you,
Yaroslav -
The site points on components for FMX
-
-
Fixed in 1.16.0.0.
- 1
-
Hello,
Since you have demo sample, please attach this project.
Thank you
-
В процессе разработки.
- 4
- 3
-
19 hours ago, Александр Клопоцкий said:
Если добавить в проект этот исправленный FB4D.Helpers.pas из Pull Request, то приложение виснит после заставки, как и с первоначальным из библиотеки.
Дефайн FGX добавлен в настройки проекта?
-
Hello @Александр Клопоцкий,
You should also add to your project sources of the dependent library JOSE.
-
I opened Pull Request for adding FGX define to this project:
https://github.com/SchneiderInfosystems/FB4D/pull/158/filesSo you can use this patch for local adopting code for FGX Native and don't forget add FGX define to project options.
- 2
-
Download:
The distributive is available by request only.Release date:
25 April 2023
Improvements 🙌
SVG
Now our SVG parser supports "style" attribute in SVG nodes. Also when you drop SVG file to Assets designer, it automatically takes logical size from SVG document.
Bug Fixes 🐛
- The regression of working Enabled property was fixed for Android. Because of it, clicking on the elements TfgCollectionView, the work TfgDrawerLayout and so on could not work.
-
-
Скачать:
Релиз доступен только по запросу.Дата релиза:
25 апреля 2023
Улучшения 🙌
SVG
Добавлено распознавание встраиваемого стиля в узлы SVG документа (Атрибут Style).
Теперь при бросании SVG файла в дерево ресурсов дизайнера ассетов автоматически проставляется логический размер на основании размера, указанного в SVG файле.
Исправление ошибок 🐛
- Исправлена регрессия связанная с исправлением работы свойства Enabled под Android. Из-за нее могли не срабатывать нажатия на элементы TfgCollectionView, работа TfgDrawerLayout и т.д.
- 4
-
Проблему смог воспроизвести. Подготовлю хотфикс.
-
Hello @Multsoft.com,
If TfgEdit is not touchable and some parent has Enabled=False, so it's another issue. I believe that the input field does not completely block the possibility of editing. In particular, the operation of the context menu. The native input field on Android does not have a full readonly mode. Therefore, we will look for a separate solution to block the context menu.
-
13 hours ago, dervish00 said:
В чем проблема нашёл. Как решить - пока не знаю. Дело в том, что формы-фреймы встраиваются в лайаут, который лежит на Content дровера. При открытии некоторых форм я закрываю доступ к дроверу, делаю его Enabled = False и ToggleControl = nil, соответственно, как я понимаю, у всех дочерних элементов Enabled становится False. Я сразу же попробовал поставить для моего лайаута Enabled = True, но, как ни странно, не помогает.
Нужен демо-проект. Вы мне показываете часть кода, который мне не много о чем-то говорит.
13 hours ago, dervish00 said:но это еще не все проблемы с новой версией: что-то перестали нормально тапаться элементы TCollectionView. Раз двадцать тапнешь, и вдруг, о чудо, она выделилась. И здесь точно не связано с Enabled, т.к. это для тех форм, у которых дровер не запрещаю.
В этом релизе никаких изменений, связанных с CollectionView не было. Поэтому если вы считаете, что они появились и есть какие-то проблемы, то скидывайте проект, на котором это можно воспроизвести. Я посмотрю.
P.S. Так решение будет продуктивнее. Если в вашем проекте ошибка, то вы ее таким образом найдете. Если Вы не можете найти решение, то опять же демо-проект поможет мне вам быстрее помочь и предложить решение. И если же действительно есть ошибка, то демо-проект даст возможность оперативно поправить ее и выпустить исправление.
-
Если можете, то скиньте мне проект, я посмотрю.
-
25 minutes ago, dervish00 said:
Судя по всему, с исправлением ошибки Enabled, по-крайней мере у меня, что-то пошло не так. Подробно пока не смотрел, но ни одно поле в работающем до обновления приложении, недоступно. Так, как будто Enabled = False.
У кого-то из компонентов предков стоит Enabled = False ?
-
Hello,
Thank you. Looks like we forgot change constant value in FGX.Platform. It doesn't affect release.
1.16.0.0 Русский
in Russian version
Posted
Идентификатор проекта нигде не нужно указывать для Yandex Mobile Ads, на сколько я знаю. Только AdUnitID у баннера.
SmartBanner не поддерживается официально в Yandex Mobile Ads. Правку внес.