Jump to content

Yaroslav Brovin

Administrators
  • Posts

    1322
  • Joined

  • Last visited

  • Days Won

    283

Yaroslav Brovin last won the day on June 19

Yaroslav Brovin had the most liked content!

8 Followers

About Yaroslav Brovin

  • Birthday September 10

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

Yaroslav Brovin's Achievements

  1. Download: setup_1.11.2.0_release.eng.zip Release date: 19 June 2021 New ✨ Drop down window TfgPopup This release adds the ability to display any content as a drop-down window attached to the specified component. To create the TfgPopup drop-down window you need to use the TfgPopupFactory factory and pass the displayed component there. As a component, you can specify any visual component, including a form. FPopup := TfgPopupFactory.CreatePopup(FPopupContent); FPopup.Size := TSizeF.Create(200, 300); You must specify the component that the drop-down window should be displayed relative to. An additional parameter can be used to specify the popup offset. FPopup.DropDown(fgButton1); If you use themes in your application, then you can specify theme name via property ThemeName. By default, the drop-down window displays a shadow. However, you can use the transparent style of the drop-down window. This is managed via the Transparent property. New demo sample was added: "Components" -> "TfgPopup" -> "Basic sample". Details: https://translate.yandex.ru/translate?lang=ru-en&url=https%3A%2F%2Fforum.fgx-native.com%2Fblogs%2Fentry%2F29-выпадающие-окна-tfgpopup%2F Improvements 🙌 TfgBitmap Added the ability to work with raw data TfgBitmap using IFGXBitmapData. To get started, call TfgBitmap.MapData and TfgBitmap.UnmapData when finished. Added the ability to rotate TfgBitmap by a fixed angle. Turns are available 90, 180 and 270 degrees. New demo sample was added: "Canvas" -> "TfgBitmap - working with raw data". Details: https://translate.yandex.ru/translate?lang=ru-en&url=https%3A%2F%2Fforum.fgx-native.com%2Fblogs%2Fentry%2F30-новые-возможности-tfgbitmap%2F TfgWebBrowser Revised the handling of opening sites with problematic certificates. Now, by default, such sites are not opened. If you want to allow them to be displayed, you need to use the new event TfgWebBrowser.OnSSLError and use the AHandler parameter to prohibit or allow loading of such resources. New demo sample was added: "Components" -> "TfgWebBrowser" -> "Handling certificate errors". TfgCamera We added possibility to setup flash mode in the moment of taking photo. You can set this mode via the new property TfgCamera.FlashMode. Also you can use flash as a torch, while camera works only in preview mode. You can do it via the new property TfgCamera.TorchMode. Pay attention, it works only in preview and doesn't work in moment of taking photo. FGX-75 TfgCamera Add functionality for enabling flash. The demo sample was updated: "Components" -> "TfgCamera" -> "Camera". New controls were added for switching flash and torch modes. Bug Fixes 🐛 Dynamical changes of TfgBitmap size could lead to raising exception (Android). TfgCanvas.DrawBitmap and TfgCanvas.DrawBitmapWithMask methods rendered an image with the TfgBitmap scale instead of the TfgCanvas scale, which resulted in an incorrect image size (Android). FGX-77 TfgAnimationHelper Access Violation (iOS).setup_1.11.2.0_release.eng.zip FGX-78 TfgEdit has no focus after enabled-false/true (Android). FGX-79 Raising TfgCollectionView events after TfgForm.OnDestroy. FGX-80 SSL Error Handler (Android). The demo sample was fixed: "Android Api" -> "AlarmManager". The additional Android Studio project was added for building Java part. setup_1.11.2.0_release.eng.zip
  2. Скачать: setup_1.11.2.0_release.rus.zip Дата релиза: 19 июня 2021 Новое ✨ Выпадающие окна TfgPopup В этом релизе добавлена возможность отображать любое содержимое в виде выпадающего окна, прикрепленного к указанному компоненту. Чтобы создать выпадающее окно TfgPopup необходимо воспользоваться фабрикой TfgPopupFactory и передать туда отображаемый компонент. В качестве компонента можно указывать любой визуальный компонент, в том числе и форму. FPopup := TfgPopupFactory.CreatePopup(FPopupContent); FPopup.Size := TSizeF.Create(200, 300); Чтобы отобразить попап необходимо указать компонент, относительно которого должно отобразиться выпадающее окно. Дополнительным параметром можно указать смещение. FPopup.DropDown(fgButton1); Если вы используете темы в вашем приложении, то вы можете указать название темы через свойство ThemeName. По умолчанию выпадающее окно отбрасывает тень. Однако, вы можете использовать прозрачный стиль выпадающего окна. Это управляется через свойство IsTransparent. Добавлен новый демонстрационный проект: "Компоненты" -> "TfgPopup" -> "Базовый пример". Детали: Улучшения 🙌 TfgBitmap Добавлена возможность работы с "сырыми" данными TfgBitmap с помощью IFGXBitmapData. Для начала работы вызовите TfgBitmap.MapData и TfgBitmap.UnmapData по окончанию. Добавлена возможность поворота TfgBitmap на фиксированный угол. Доступны повороты на 90, 180 и 270 градусов. Добавлен новый демонстрационный проект: "Графика" -> "TfgBitmap - работа с "сырыми" данными". Подробнее: TfgWebBrowser Пересмотрена обработка открытия ресурсов с проблемными сертификатами. Теперь по умолчанию, такие сайты не открываются. Если вы хотите допустить их отображение, необходимо использовать новое событие TfgWebBrowser.OnSSLError и через параметр AHandler запретить или разрешить загрузку таких ресурсов. Добавлен новый демонстрационный проект: "Компоненты" -> "TfgWebBrowser" -> "Обработка ошибок сертификатов". TfgCamera Для камеры добавлена возможность указывать режим работы вспышки в момент снятия фотографии. Это поведение управляется новым свойством TfgCamera.FlashMode. Дополнительно можно использовать вспышку в качестве фонарики в процессе работы предпросмотра (Preview). Это задается через новое свойство TfgCamera.TorchMode. Обратите внимание, что фонарик работает только в режиме превью и игнорируется в момент съемки фотографии. FGX-75 TfgCamera добавить функционал включения вспышки. Обновлен демонстрационный пример: "Компоненты" -> "TfgCamera" -> "Фотокамера". Добавлены элементы управления для включения вспышки и режима фонарика. Исправление ошибок 🐛 Динамическое изменение размера TfgBitmap могло приводить к исключению (Android). Методы TfgCanvas.DrawBitmap и TfgCanvas.DrawBitmapWithMask отрисовывали изображение со скейлом TfgBitmap вместо скейла TfgCanvas, что приводило к неверному размеру изображения (Android). FGX-77 TfgAnimationHelper Access Violation (iOS). FGX-78 TfgEdit нет фокуса после enabled-false/true (Android). FGX-79 Вызов событий TfgCollectionView после TfgForm.OnDestroy. FGX-80 SSL Error Handler (Android). Исправлен демонстрационный проект: "Android Api" -> "AlarmManager". Добавлен проект для сборки Java части в Android Studio.
  3. Доброго дня! В ближайшем релизе 1.11.2.0 всех нас ждет появление поддержки выпадающих окон TfgPopup. Если вам необходимо отобразить содержимое в виде выпадающего окна, то эта возможность непременно вам пригодится. Создание В качестве содержимого выпадающего окна можно использовать как любой визуальный компонент так и форму. Удобнее всего использовать форму, поскольку она позволяет создать содержимое выпадающего окна прямо в дизайнере. При создании формы важно указать: Отключить полноэкранный режим формы TfgForm.FullScreen = False. Опционально сделать фон прозрачным через TfgForm.Transparent = True . В качестве начинки окна, я сделал форму с TfgCollectionView, используемым для отображения содержимого Чтобы создать выпадающее окно нужно обязательно иметь содержимое, которое вы планируете показать в этом выпадающем окне. Создание выполняется через фабрику FGX.Popup.TfgPopupFactory, как и тосты, пикеры, диалоги и тд. var FPopup: TfgPopup; FPopupContent: TFrameList; FPopupContent := TFrameList.Create(nil); FPopup := TfgPopupFactory.CreatePopup(FPopupContent); После создания TfgPopup становится владельцем вашего содержимого. Это значит, что содержимое будет уничтожено, как только TfgPopup будет удален. Если вы хотите сами контролировать время жизни содержимого, вы можете передать вторым параметром значение False. В этом случае, после уничтожения TfgPopup, ваше содержимое останется жить. FPopup := TfgPopupFactory.CreatePopup(FPopupContent, False); После создания необходимо указать размер выпадающего окна при помощи свойства TfgPopup.Size. Например, если выпадающее окно прикреплено к кнопке. то имеет смысл в качестве ширины брать ширину кнопки: FPopup.Size := TSizeF.Create(fgButton1.Width, 200); Отображение Для отображения выпадающего окна существует два одноименных метода TfgPopup.DropDown, оба которых привязывают отображение окна к указанному компоненту. /// <summary> /// Открывает выпадающее окно, прикрепленное к указанному компоненту <c>AAnchor</c> со смещением <c>AOffset</c>. /// </summary> procedure DropDown(const AAnchor: TfgControl; const AOffset: TPointF); overload; virtual; abstract; /// <summary>Открывает выпадающее окно, прикрепленное к указанному компоненту <c>AAnchor</c>.</summary> procedure DropDown(const AAnchor: TfgControl); overload; FPopup.DropDown(fgButton1); Если вам необходимо выполнить отображение выпадающего окна со смещением, то вы можете передать это смещение вторым параметром: FPopup.DropDown(fgButton1, TPointF.Create(0, 8)); Эта версия метода удобна в случаях, когда вы самостоятельно делаете внешний вид выпадающего окна и хотите добавить отступы между выпадающим окном и компонентом, вызывающим это окно. Для закрытия окна используйте метод Close. /// <summary>Закрывает выпадающее окно.</summary> procedure Close; virtual; abstract; Настройка внешнего вида По умолчанию TfgPopup выглядит, как TfgCardPanel с тенью и рамкой. Однако, если вы хотите сделать свой внешний вид окна, то вы можете отключить отображение по умолчанию через свойство TfgPopup.IsTransparent. В этом случае содержимое будет отображено прямо под привязанным компонентом. /// <summary>Прозрачное выпадающее окно или нет?</summary> property IsTransparent: Boolean read FIsTransparent write SetIsTransparent; Если вы используете в своих приложениях темы, то вы можете использовать темы и для содержимого выпадающего окна. Для этого необходимо указать название темы в свойстве TfgPopup.ThemeName. Таким образом можно добавить поддержку темной темы и детальнее настроить внешний вид попапов. /// <summary>Название темы, используемой для содержимого выпадающего окна.</summary> property ThemeName: TfgThemeName read FThemeName write SetThemeName; ios.mp4 android.mp4 События В TfgPopup поддерживается два типа событий, OnOpened и OnClosed, вызываемые при открытии и закрытии выпадающего окна соответственно. Так же мы предлагаем две версии каждого события для использования совместно с анонимными функциями и событиями. /// <summary>Вызывается, когда выпадающее окно отображается на экране.</summary> property OnOpened: TNotifyEvent read FOnOpened write FOnOpened; /// <summary>Вызывается, когда выпадающее окно отображается на экране.</summary> property OnOpenedCallback: TfgCallback read FOnOpenedCallback write FOnOpenedCallback; /// <summary>Вызывается, когда выпадающее окно скрывается с экрана.</summary> property OnClosed: TNotifyEvent read FOnClosed write FOnClosed; /// <summary>Вызывается, когда выпадающее окно скрывается с экрана.</summary> property OnClosedCallback: TfgCallback read FOnClosedCallback write FOnClosedCallback;
  4. Добрый день, Судя по описанию - это однозначно баг. После OnDestroy никакие события компонентов формы не должны вызываться, конечно.
  5. Добрый вечер, нужна демка
  6. Download: setup_1.11.1.0_release.eng.zip Release date: 26 May 2021 Improvements 🙌 TfgBottomSheetLayout The new group settings property were added TfgBottomSheetLayout.BlockContentSettings. It allows to specify default action, when user taps blocked content area. The old property BlockContentMode was moved to BlockContentSettings.Mode. Now you can choose which action to perform automatically when clicking on the blocked area of the main content via the BlockContentSettings.AutoCloseAction. You can also now catch the touch event of this area via the new TfgBottomSheetLayoutOnBlockedContentTap event for manual page manipulation. FGX-60 Hide/Close TfgBottomSheetLayout. FGX-61 TfgBottomSheetLayout AutoHide. Assets manager The new method TfgAssetsFactory.SaveConfigToFile was added, which allows to save information about filtered assets in file. Example of saving all resources whose name starts with the Cache prefix: const CachePrefix = 'Cache'; TfgAssetsFactory.SaveConfigToFile(TfgAssetsManager.Current, ConfigFileName, function (const AAsset: TfgAsset): Boolean begin Result := string(AAsset.Name).StartsWith(CachePrefix); end, [TfgWritingOption.EmitEmptyAssets]); FGX-35 Add a possibility to save filtered assets to config file. Other TfgWebBrowser can open https pages with certificate issues (Android). The new helpers methods ToString and ToARGBHex were added for TAlphaColor. The new header file Android.Api.Accessibility was added for using Android Accessibility. Bug Fixes 🐛 FGX-62 TfgAnimationHelper Access Violation (iOS). FGX-63 Incorect rendering background of fgNavigationBar (iOS). FGX-64 TfgBottomSheet doesn't store AlignmentChildren.Direction value. FGX-66 TfgCardPanel wrong rendering background color (iOS). FGX-67 TfgAnimationHelper.ShowForm(FrameName) is crashed (iOS). FGX-68 Application was crashed, when the HideForm was invoked. FGX-69 AddBitmapFromUrlAsync could led to exception sometimes (Android). The TfgBottomSheetLayout.BlockContentMode property didn't work, if ContentShadingSettings.Enabled = False (Android). The transation of TfgTranslation designer was fixed.
  7. Скачать: setup_1.11.1.0_release.rus.zip Дата релиза: 26 мая 2021 Улучшения 🙌 TfgBottomSheetLayout Добавлена группа настроек TfgBottomSheetLayout.BlockContentSettings позволяющая автоматически свернуть/закрыть страницу в модальном режиме при касании заблокированной области основного содержимого. В эту группу перемещено свойство BlockContentMode -> BlockContentSettings.Mode. Теперь вы можете выбрать, какое действие нужно совершить автоматически при нажатии на заблокированную область основного содержимого через свойство BlockContentSettings.AutoCloseAction. Так же вы можете теперь поймать событие касания этой области через новое событие TfgBottomSheetLayout.OnBlockedContentTap для ручных манипуляций со страницей. FGX-60 Hide/Close TfgBottomSheetLayout. FGX-61 TfgBottomSheetLayout AutoHide. Менеджер ресурсов Добавлен новый метод TfgAssetsFactory.SaveConfigToFile, который позволяет сохранить информацию об отфильтрованных ресурсов в любой файл. Пример сохранения всех ресурсов, у которых имя начинается с префикса 'Cache': const CachePrefix = 'Cache'; TfgAssetsFactory.SaveConfigToFile(TfgAssetsManager.Current, ConfigFileName, function (const AAsset: TfgAsset): Boolean begin Result := string(AAsset.Name).StartsWith(CachePrefix); end, [TfgWritingOption.EmitEmptyAssets]); FGX-35 Assets Добавить возможность сохранять информацию об ассетах в файл. Прочее Теперь TfgWebBrowser может открывать https страницы, которые имеют проблемы с сертификатом (Android). Добавлены хелперы ToString и ToARGBHex для TAlphaColor. Добавлен заголовочный файл Android.Api.Accessibility для возможности использования Android Accessibility. Исправление ошибок 🐛 FGX-62 TfgAnimationHelper Access Violation (iOS). FGX-63 Некорректная работа fgNavigationBar (iOS). FGX-64 TfgBottomSheet не сохраняет AlignmentChildren.Direction. FGX-66 TfgCardPanel Магические способности(iOS). FGX-67 TfgAnimationHelper.ShowForm(FrameName) падает (iOS). FGX-68 Новая анимация - крашится приложение при вызове HideForm. FGX-69 Исключение при загрузке изображений (Android). Свойство TfgBottomSheetLayout.BlockContentMode не работало, если ContentShadingSettings.Enabled = False (Android).
  8. Давайте предметные вопросы задавать в соответствующих ветках форума с деталями, что делается и как. Желательно с кусками кода или демо проектом. А то такие вопросы легко теряются именно здесь среди других комментариев. Спасибо
  9. Хотя, я понял в чем дело. Посмотрим. Как минимум не должно быть вызова отображения формы при ее скрытии. Разберемся с этим. Но и создание компонентов в любом случае не надо делать в OnShow.
  10. При каждом отображении формы вызывается ее обработчик OnShow. Собственно, если вы кнопки создаете в OnShow, то вы их создаете на каждого отображение формы. Что не верно. Их надо создать один раз, например в конструкторе или в событии OnCreate.
  11. Добрый день, Какая платформа? Какая версия IDE используется? Демо проект? В каком месте вы создаете компоненты в рантайме? Спасибо
×
×
  • Create New...