Jump to content

Yaroslav Brovin

Administrators
  • Posts

    2,572
  • Joined

  • Last visited

  • Days Won

    647

Everything posted by Yaroslav Brovin

  1. Download: The distributive is available by request only. Release date: 6 November 2020 Changelog: ~ Loss of backward compatibility: - The value TfgTextTrimming.Word was removed. This value is not supported by either iOS or Android and is not really used in mobile development, so we decided to remove it to avoid misleading developers. - Two new methods TfgCanvas.BeginPaint/EndPaint were added. Now you have to invoke it, when perform rendering on TfgBitmap canvas. These methods are required for correct rendering in iOS. If you are rendering in TfgBitmap, you need to frame the entire rendering in BeginPaint/EndPaint. Otherwise, you won't see the rendering result in iOS. - The TfgApplicationState type was moved from FGX.Platform -> FGX.Application. - Now the TfgProgressBar automatically uses autosize for height. - We completely redesign TfgButton component. All details here: https://forum.fgx-native.com/topic/569-%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8-%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82-tfgbutton/ - IFGXApplicationService.SupportedOrientations now uses changed TfgInterfaceOrientation type. * TfgScreen: - New SafeAreaPadding property was added to TfgScreen. This allows you to get margins from the edge of the screen, where it is not recommended to place UI elements. For example, this way you can get the height of the system status bar and the height of the system navigation bar. * TfgApplication: - Now you can get current application state via Application.State. - Now the Application can create form deffered. It's used only on iOS. - Implementation of blocking change of screen orientation Application.SupportedOrientations for Android at runtime. https://forum.fgx-native.com/topic/626-lock-screen-orientation-in-runtime/ * TfgArc, TfgArch: - Sometimes StartAngle, SweepAngle and Depth properties could be not saved into form resource. Fixed. * TfgButton: - We completely redesign TfgButton component. All details here: https://forum.fgx-native.com/topic/569-%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8-%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82-tfgbutton/ * TfgCheckBox, TfgRadioButton: - New property LetterSpacing was added. * TfgEdit: - When using ReturnKeyType = Next, the next focus element is selected among all controls of the application's open forms. Fixed. https://forum.fgx-native.com/topic/609-%D0%BA%D1%83%D1%80%D1%81%D0%BE%D1%80-%D0%BF%D1%80%D1%8B%D0%B3%D0%B0%D0%B5%D1%82-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-edit%D0%B0%D0%BC%D0%B8-2-%D1%83%D1%85-%D1%84%D0%BE%D1%80%D0%BC/?tab=comments#comment-2345 * TfgCollectionView: - New property ColumnWidth was added. It allows to know column width. - New helper methods were added: - GetSelectionColor - returns selection color for item by index. - IsSelectableItem - is item selectable or not. - New event OnMovedItem was added. It's invoked, when item is moved on new position via Drag and Drop. - TfgCollectionView.OnTap doesn't work on empty content space. Fixed. https://forum.fgx-native.com/topic/614-tfgcollectionview-ontap-event-doesnt-work/ * TfgWebBrowser: - Now component supports Basic-authentification. - New sample: "Components" -> "TfgWebBrowser" -> "Basic-authentification". * TfgCanvas: - Two new methods TfgCanvas.BeginPaint/EndPaint were added. - New methods were added for easier drawing round rectangles: TfgCanvas.DrawRoundRect/FillRoundRect. * TfgPath: - The internal presentation of SVG path was updated. Now the implementation is more flexible - Now the TfgPath stores all command parameters. - Minor bugs were fixed, which could be found on rendering complicated shapes. * TfgBitmap: - The new property TfgBitmap.LogicalBounds was added. * TfgPageControl: - Text color was not applied in designer. Fixed. - When you added/removed pages, text settings were lost. Fixed. https://forum.fgx-native.com/topic/602-runtime-pages-creation * TfgProgressBar: - Under certain circumstances, the value of the Min property could not be set. Fixed. - The Autosize property was added. - Нельзя было обратно вернуть цвета оттенков BackgroundTintColor и TintColor. Исправлено. * TfgDrawerLayout: - Any time a component was moved/hidden in TfgDrawer, the panel was automatically closed. Fixed. https://forum.fgx-native.com/topic/603-%D0%B4%D0%B2%D0%B0-%D0%B8-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D0%BC%D0%B5%D0%BD%D1%8E/?tab=comments#comment-2332 - When adding a component to the form, its component parts were not named. This meant that the events of these components could not be used. Fixed. https://forum.fgx-native.com/topic/593-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-%D0%BF%D1%80%D0%B8-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9-%D0%B2-%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%D0%B5%D1%80%D0%B5-%D0%B4%D0%BB%D1%8F-%D1%87%D0%B0%D1%81%D1%82%D0%B5%D0%B9-tfgdrawerlayout/ * Form Designer: - The dark theme supports were added. - Now when you press on any components on form, designer shows special hint with component name. * Assets designer: - After re-opening the project and making changes to the assets Manager, all assets could be lost. Corrected. * New project wizard: - New Android platform was added "Android11". - The usage Android version statistics were updated. * Demos: - "Application" -> "SupportedOrientations" - "Components" -> "TfgWebBrowser" -> "Basic-authentification". * The new unit FGX.Types.Color for working with color was added. * Android Api: - New headers were added: - android.graphics.Outline, - android.graphics.drawable.GradientDrawable, - android.graphics.drawable.ShapeDrawable, - android.graphics.drawable.shapes.Shape - android.graphics.drawable.shapes.RectShape, - android.graphics.drawable.shapes.RoundRectShape
  2. Скачать: Релиз доступен только по запросу. Дата релиза: 6 ноября 2020 Список изменений: ~ Потеря обратной совместимости: - Удалено значение TfgTextTrimming.Word. Данное значение не поддерживается ни iOS, ни Android и реально не используется в мобильной разработке, поэтому мы решили удалить это значение, чтобы не вводить разработчиков в заблуждение. - Для канвы добавлены два новых парных метода TfgCanvas.BeginPaint/EndPaint, которые теперь НЕОБХОДИМО вызывать при любой отрисовке на канве битмапа TfgBitmap. Данные методы необходимы для корректной отрисовки в iOS. Если вы выполняете отрисовку в TfgBitmap, вам необходимо обрамить всю отрисовку в BeginPaint/EndPaint. В противном случае, в iOS вы не увидите результат отрисовки. - Тип TfgApplicationState перемещен из FGX.Platform -> FGX.Application. - Для TfgProgressBar по умолчанию включено автоматическое вычисление высоты. - Полностью переработанный компонент TfgButton. https://forum.fgx-native.com/topic/569-%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8-%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82-tfgbutton/ - IFGXApplicationService.SupportedOrientations теперь использует измененный перечисляемый тип TfgInterfaceOrientation вместо множества TfgInterfaceOrientations. * TfgScreen: - Для экрана добавлено новое свойство SafeAreaPadding, позволяющее получить отступы от края экрана, где не рекомендуется размещать элементы UI. Например, таким образом можно получить высоту системного статус бара и высоту системной панели навигации. * TfgApplication: - Получить текущее состояние приложения теперь можно через Application.State. - Теперь Application умеет создавать формы отложенно при старте приложения. Используется только в iOS. - Реализация блокировки смены ориентации экрана Application.SupportedOrientations для Android в рантайм. https://forum.fgx-native.com/topic/626-lock-screen-orientation-in-runtime/ * TfgArc, TfgArch: - Иногда свойства StartAngle, SweepAngle и Depth могли быть не сериализованы. Исправлено. * TfgButton: - Полностью переработанный компонент. https://forum.fgx-native.com/topic/569-%D0%BD%D0%BE%D0%B2%D0%BE%D1%81%D1%82%D0%B8-%D0%BF%D0%BE%D0%BB%D0%BD%D0%BE%D1%81%D1%82%D1%8C%D1%8E-%D0%BE%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9-%D0%BA%D0%BE%D0%BC%D0%BF%D0%BE%D0%BD%D0%B5%D0%BD%D1%82-tfgbutton/ * TfgCheckBox, TfgRadioButton: - Добавлено свойство LetterSpacing. * TfgEdit: - При использовании ReturnKeyType = Next, следующий фокусный элемент выбирается среди всех контролов открытых форм приложения. Исправлено. https://forum.fgx-native.com/topic/609-%D0%BA%D1%83%D1%80%D1%81%D0%BE%D1%80-%D0%BF%D1%80%D1%8B%D0%B3%D0%B0%D0%B5%D1%82-%D0%BC%D0%B5%D0%B6%D0%B4%D1%83-edit%D0%B0%D0%BC%D0%B8-2-%D1%83%D1%85-%D1%84%D0%BE%D1%80%D0%BC/?tab=comments#comment-2345 * TfgCollectionView: - Добавлено новое свойство ColumnWidth, которое возвращает ширину столбца. - Добавлены новые вспомогательные методы: - GetSelectionColor - возвращает цвет выделения элемента по индексу. - IsSelectableItem - проверяет, допускает ли элемент выделение. - Добавлено новое событие OnMovedItem, которое вызывается после окончания перемещения элемента на новую позицию при перетаскивании. - Не работает TfgCollectionView.OnTap при тапе на пустую область. Исправлено. * TfgWebBrowser: - Добавлена возможность обработки Basic-аутентификации. - Добавлен новый пример: "Компоненты" -> "TfgWebBrowser" -> "Basic-аутентификация". * TfgCanvas: - Для канвы добавлены два новых парных метода TfgCanvas.BeginPaint/EndPaint, которые теперь НЕОБХОДИМО вызывать при любой отрисовке на канве битмапа TfgBitmap. Данные методы необходимы для корректной отрисовки в iOS. Если вы выполняете отрисовку в TfgBitmap, вам необходимо обрамить всю отрисовку в BeginPaint/EndPaint. В противном случае, в iOS вы не увидите результат отрисовки. - Добавлены новые методы для отрисовки и закраски скругленного прямоугольника TfgCanvas.DrawRoundRect/FillRoundRect. * TfgPath: - Обновлено представление графического пути SVG Path в FGX Native, реализация стала гибче. - Теперь TfgPath хранит все данные команд. - Исправлены минорные ошибки, которые могли возникать при отрисовки сложных фигур. * TfgBitmap: - Добавлено новое свойство для получения логического размера битмапа TfgBitmap.LogicalBounds. * TfgPageControl: - Не применялся цвет шрифта для вкладок в дизайнере. - При добавлении/удалении вкладок терялись настройки шрифта табов. https://forum.fgx-native.com/topic/602-runtime-pages-creation * TfgProgressBar: - При определенных обстоятельствах нельзя было установить значение свойства Min. - Добавлено свойство Autosize. - Нельзя было обратно вернуть цвета оттенков BackgroundTintColor и TintColor. Исправлено. * TfgDrawerLayout: - При любом перемещении/скрыти компонента в TfgDrawer, панель автоматически закрывалась. Исправлено. https://forum.fgx-native.com/topic/603-%D0%B4%D0%B2%D0%B0-%D0%B8-%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5-%D0%BC%D0%B5%D0%BD%D1%8E/?tab=comments#comment-2332 - При добавлении компонента на форму, его составные части были не названы. Это приводило к тому, что нельзя бы использовать события этих компонентов. Исправлено. https://forum.fgx-native.com/topic/593-%D0%BE%D1%88%D0%B8%D0%B1%D0%BA%D0%B0-%D0%BF%D1%80%D0%B8-%D1%81%D0%BE%D0%B7%D0%B4%D0%B0%D0%BD%D0%B8%D0%B8-%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D0%B9-%D0%B2-%D0%B4%D0%B8%D0%B7%D0%B0%D0%B9%D0%BD%D0%B5%D1%80%D0%B5-%D0%B4%D0%BB%D1%8F-%D1%87%D0%B0%D1%81%D1%82%D0%B5%D0%B9-tfgdrawerlayout/ * Дизайнер форм: - Добавлена поддержка темной темы. - При нажатии на компонент теперь выводится метка с названием компонента. * Дизайнер ресурсов: - После переоткрытия проекта и внесении изменений в менеджер ресурсов могли пропасть все ресурсы. Исправлено. * Визард нового проекта: - Добавлена платформа "Android11". - Обновлена статистика по покрытию Android-устройств согласно выбранным настройкам платформы. * Демо проекты: - "Application" -> "SupportedOrientations" - "Компоненты" -> "TfgWebBrowser" -> "Basic-аутентификация". * Добавлен новый модуль для работы с цветами FGX.Types.Color. * Android Api: - Добавлены новые обертки: - android.graphics.Outline, - android.graphics.drawable.GradientDrawable, - android.graphics.drawable.ShapeDrawable, - android.graphics.drawable.shapes.Shape - android.graphics.drawable.shapes.RectShape, - android.graphics.drawable.shapes.RoundRectShape
  3. На этой неделе всех нас ждет большой релиз библиотеки FGX Native 1.6.0.0, в который войдет много новых вещей и самое главное - Альфа версия iOS! Вкратце обо всех нововведениях по порядку: FGX Native for iOS (Alpha) Это свершилось! Релиз 1.6.0.0 будет содержать Альфа версию FGX Native for iOS. Важно. Поскольку это альфа версия, то не стоит ожидать от нее полноценной работоспособности. Данный релиз содержит частично реализованный функционал: часть компонентов пока не реализованы, часть функционала компонентов может не работать. Однако, при этом, часть компонентов уже полностью готова. Теперь все проекты автоматически получают новый таргет iOS Device 64-bit. При открытии старого проекта, происходит автоматическая миграция проекта, в ходе которой: Добавляется платформа iOS Device 64-bit для сборки Добавляется конфигурация для деплоя iOS приложения. Добавляются настройки проекта, связанные с iOS (иконки, название пакетов и тд) Добавляются ассеты для iOS. В дизайнере пока нет возможности переключиться на стиль iOS. Это будет добавлено уже ближе к полноценному релизу iOS части. На текущий момент: Минимальная поддерживая версия iOS 11. Не реализованы следующие компоненты : TfgCalendar, TfgAutoCompleteEdit, TfgSearchBox, TfgWebBrowser, TfgVideoControl, TfgCamera, TfgCameraPreview, TfgBarcodeScanner. Не реализована анимация. Не реализованы жесты. и тд Важно. Для сборки проекта необходимо использовать SDK не выше 13.5. С более старшими версиями SDK вы получите ошибку при линковке приложения. Мы уже занимаемся этим вопросом. За время разработки iOS версии у нас накопилось большое количество изменений, которые затрагивают не только iOS реализацию, но и некоторые аспекты работы библиотеки в целом. В процессе приходят новые идеи по улучшению уже существующего API компонентов. Чтобы не копить все изменения отдельно от текущей версии библиотеки, мы решили соединить все изменения по iOS с текущим релизом. Так что теперь вы всегда будете в курсе текущего состояния iOS части. Мы ценим терпение и поддержку наших клиентов. Поэтому, поскольку релиз FGX Native for iOS немного задерживается, мы приняли решения, что не будем увеличивать цену за продление подписки в момент релиза полноценной iOS для клиентов, которые на момент релиза будут иметь активную подписку. Т.е. если на момент полноценного релиза iOS у вас есть активная подписка, то стоимость продления для вас останется прежней. Для всех остальных стоимость первоначальной подписки и продления будет увеличена. Начиная с 1.6.0.0 мы будем включать в каждый релиз список доработок по iOS, чтобы вы всегда были в курсе. Обо всех найденных ошибках вы сможете сообщить нам в новой ветке форума https://forum.fgx-native.com/forum/102-ios-alpha-тестирование/. Так же в ней вы можете высказать свои пожелания по приоритету разработки того или иного функционала. Это поможет нам составить список первоочередных задач и сфокусироваться на действительно важных для вас задачах. Полностью переработанная кнопка TfgButton В дополнение к статье необходимо упомянуть, что у кнопки есть еще один важный стиль, о котором не говорилось ранее - Default. В этом стиле кнопка выглядит так, как это принято на целевой платформе. На Android - это закрашенная кнопка, в iOS - это текст без фона. Используйте этот стиль, если хотите придерживаться системного стиля отображения кнопки. Ранее у кнопки вы могли наблюдать внутренние отступы между ее границей и фоном. Это в свою очередь немного усложняло позиционирование кнопки по отношению к другим компонентам. Поэтому в этом релизе мы убрали у Android кнопки все отступы между границей компонента и фоном. Если вы использовали эти отступы при выравнивании компонентов вашей формы, вам следует задать эти отступы напрямую через TfgButton.Margins. Небольшие улучшения в дизайнере В дизайнер добавлен ряд косметических улучшений, чтобы нашим пользователям было приятнее работать и ничто не отвлекало их от решения задач. Среди улучшений темная тема для дизайнера форм. А так же вспомогательная подсказка, отображающая имя выделенного компонента. Подсказка появляется при нажатии на компонент. Правила обрезки текста (TfgTextTrimming) В первоначальной версии библиотеки мы закладывали несколько способов обрезки текста: по символам, по словам и без обрезания. Однако, в результате реализации iOS и Android оказалось, что обрезка текста по словам не используется и не поддерживается ни на одной из платформ. Поэтому в данном релизе мы решили убрать значение TfgTextTrimming.Word, так как оно не работало и не имеет смысла. Если вы использовали в своих проектах TfgTextTrimming.Word, то вам необходимо переоткрыть формы, проигнорировав ошибку, и сохранить формы заново. Канва TfgCanvas Мы добавили два важных метода, которые теперь НЕОБХОДИМО использовать при выполнении любой отрисовки на TfgBitmap - это TfgCanvas.BeginPaint и TfgCanvas.EndPaint. При вызове этих методов происходят определенные действия по переносу данных битмапа между буферами для ускорения работы с изображениями в целом. Если в уже существующем коде вы не расставите эти методы, то на iOS платформе вы не увидите результат отрисовки. Небольшой пример по использованию новых методов BeginPaint/EndPaint для отрисовки иконки: Scale := TfgScreenManager.Main.Scale; IconSize := Ceil(DefaultIconSize * Scale); FMoreIcon := TfgBitmap.Create(IconSize, IconSize); FMoreIcon.Scale := Scale; with FMoreIcon.Canvas do begin BeginPaint; try Fill.Kind := TfgBrushKind.Solid; Fill.Color := TAlphaColorRec.Black; FillCircle(TPointF.Create(6, 12), 2); FillCircle(TPointF.Create(12, 12), 2); FillCircle(TPointF.Create(18, 12), 2); finally EndPaint; end; end; Помимо этого, добавлены упрощенные методы для отрисовки скругленных прямоугольников: TfgCanvas.DrawRoundRect/FillRoundRect. Basic Аутентификация в TfgWebBrowser Для браузера по запросу добавлена поддержка Basic аутентификация. Чтобы выполнить аутентификация, достаточно задать свой обработчик на новое событие OnBasicAuthentificationRequest, в которое передается специальный AHandler, отвечающий за процесс аутентификации. Процесс аутентификация может выглядеть так: procedure TFormMain.fgWebBrowser1BasicAuthentificationRequest(Sender: TObject; const AUrl: string; const AHandler: IFGXBasicAuthentificationHandler); begin TfgDialogs.InputQuery('Input credentional data', ['User name', 'Password'], ['', ''], procedure (const AResult: TModalResult; const AValues: TArray<string>) begin if AResult = mrOk then AHandler.Proceed(AValues[0], AValues[1]) else AHandler.Cancel; end); end; Если аутентификация не прошла, то браузер будет пытаться пройти ее повторно, повторно вызывая OnBasicAuthentificationRequest. Новые параметры экрана TfgScreen Для TfgScreen добавлен новый параметр SafeAreaPadding, который позволяет узнать, какие области на экране заняты системными элементами. Если раньше эти отступы можно было получить только в событии формы TfgForm.OnSafeAreaChanged, то теперь их можно получить в любой момент с помощью TfgScreenManager.Main.SafeAreaPadding. Tip: Не забывайте, что коэффициент масштабирования экрана всегда можно получить кроссплатформенным способом через TfgScreenManager.Main.Scale. Другие улучшения В этом релизе также содержится большое количество исправлений ошибок. Всем спасибо за внимание!
  4. Hello Michael, I will have a look at it today. Thank you, Yaroslav
  5. Hello, Could you attach? All device log from application Android OS version. Stack trace from IDE. Thank you
  6. В процессе реализации уже существующих компонентов библиотеки FGX Native для iOS мы иногда сталкиваемся с тем, что для полноценной кроссплатформенной разработки приложений текущего функционала компонентов уже не хватает. Например, в панели TfgNavigationBar (iOS) для кнопки навигации часто иконку дополняют текстом, в то время, как в андроиде текст никто не добавляет. Однако, речь в этой новости пойдет не об этом компоненте, а об обычной кнопке TfgButton. С виду кнопка - один из самых простых компонентов. Однако, на практике, это довольно сложный компонент, если брать во внимание большое разнообразие в мире кнопок разных стилей и видов. Было много причин, почему кнопка TfgButton в библиотеке довольно ограничена в своих возможностях. Главная из них - это как сделать действительно удобный набор настроек, который угодил бы большинству и при этом был бы прост и гибок в настройке. Рад поделиться, что в процессе реализации iOS и изучения Material Design, мы пришли к удобному на наш взгляд набору настроек кнопки. Стили Теперь кнопка может иметь один из трёх базовых стилей: Text - обычная текстовая кнопка, без рамки, с возможностью привязать иконку. Этот тип предназначен для третьестепенных действий. Outlined - это плоская Text кнопка с окантовкой. Этот же тип используется для второстепенных действий. Contained - это Outlined кнопка + заливка области. Естественно, каждый вид кнопки должен иметь свой индивидуальный набор настроек. И желательно, чтобы инспектор объектов отображал только актуальные для данного стиля настройки. Так, например, если используется Text кнопка, то для нее должны быть доступны настройки рамки и заполнения. Поэтому теперь каждый стиль кнопки динамически подгружает свой набор настроек. Выбор стиля выполняется в инспекторе объектов в новом свойстве Appearance: При изменении стиля будут доступны разные наборы настроек внешнего вида: Как вы могли уже заметить, список настроек, отвечающих за внешний вид, довольно сильно расширился, что позволяет легко делать такие разные по виду кнопки: круглые, плоские, разноцветные, контрастные и тд Настройки элементов Стоит отметить, что теперь можно отдельно управлять отображением каждого элемента кнопки: Текст Иконка Рамка Наполнение Таким образом, теперь для иконки можно отдельно указать оттенок прямо на уровне компонента. Это особенно удобно в случаях, когда вы используете одну и ту же иконку в разных местах с разными оттенками. Если ранее для решения подобной задачи было необходимо делать копии одной и той же иконки и менять ей оттенок в дизайнере ресурсов, то сейчас достаточно установить свойство Appearance.Icon.TintColorName равным "Theme\Text\Icon" (к примеру). Так же теперь можно указать желаемый размер области вывода иконки. В автоматическом режиме, иконка старается стать как можно больше, занимая все доступное пространство кнопки. При указании фиксированного размера, иконка не сможет превысить указанное значение: При этом, кнопка с Contained стилем умеет автоматически подбирать цвета текста и иконки на основании цвета фона (если вы не указали свои цветовые предпочтения явно? Помимо этого, если вы хотите отобразить цветную иконку, вы можете отключить автоматическую перекраску через свойство Appearance.Icon.RenderMode. Для рамки кнопки мы предусмотрели возможность изменить значение радиуса скругления и толщину рамки. Изменения API Переименованы свойства ImageName -> IconName, ImageLocation -> Appearnace.Icon.Location, так как на наш взгляд иконка - это небольшой графический элемент, который преимущественно отображается на кнопке. При этом мы оставили обратную совместимость, так что при запуске старого проекта, старое значение из свойства ImageName и ImageLocation будет автоматически прочитано. Свойства TextSettings и TextShadow теперь находятся в группе настроек Appearance.Text. Они так же будут успешно восстановлены для старых проектов. Старые типы кнопок TfgButonKind.Raised и Flat теперь не будут поддерживаться и при открытии проекта автоматически будут сконвертированы в Contained и Text стили. P.S. Всем хороших выходных и успешного кодирования ?
  7. Надо сразу писать про проблему... А не костылить. Критические ошибки мы стараемся оперативно править.
  8. Ок, понял. Посмотрю. Спасибо.
  9. Добрый вечер, можете указать тайминг к видео, на какой секунде видно, описываемое поведение?
  10. Download : The distributive is available by request only. Release d ate: 24 September 2020 Changelog: * TfgCollectionView: - When NotifyItemsRemoved is invoked, future items selection occurs with a shift. Fixed. https://forum.fgx-native.com/topic/549-tfgcollectionview-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0-%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D0%B8%D1%82-%D0%BA-%D1%81%D0%B4%D0%B2%D0%B8%D0%B3%D1%83-%D0%B2%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F/ * TfgEdit: - Regression. The BackgroundName doesn't work for TfgEdit. Fixed. * TfgForm/TfgControl: - TfgForm wrong defined reference on TfgControl.Form. Now if form-frame is embedded into other, it contains reference on root form and all nested controls refer to the form-frame. If the form is not embedded, than TfgForm.Form = nil.
  11. We have discussed this issue in direct chat with Omar. The problem is in his Samsung device. Each Android device provides configuration information about camera work. FGX Native provide special API for it FGX.Camera: IFGXCamera = interface ['{14C827DC-3D2C-4C40-8CFA-665CF1B7F937}'] function GetId: string; {$REGION 'Characteristics'} function GetType: TfgCameraType; function GetAvailableFrameSizes(const AFrameType: TfgFrameType): TArray<TSize>; overload; function GetAvailableFrameSizes(const AImageFormat: TfgImageFormat): TArray<TSize>; overload; function GetOutputSupportedFormats: TfgImageFormats; function GetCameraRotationAngle: TfgRotation; {$ENDREGION} Based on available configuration and user settings TfgCamera prepares session for capturing photo. Omar's device returns the followed JPEG format sizes: supportedSize=2048x1536 supportedSize=2048x1152 supportedSize=1920x1920 supportedSize=1920x1080 supportedSize=1440x1080 supportedSize=1280x720 supportedSize=1088x1088 supportedSize=1056x704 supportedSize=960x720 supportedSize=800x480 supportedSize=736x736 supportedSize=720x480 supportedSize=640x480 supportedSize=352x288 supportedSize=320x240 supportedSize=176x144 However, his device doesn't really support square aspect ratio. So bug in Samsung leads to offset result photo: We are not able to fix this bug in FGX Native library, because it's a low level camera implementation bug on operation system level. However, changing required photo size on other aspect ratio works fine. It's possible to specify required frame size via property TfgCamera.MaxFrameSize.
  12. Скачать: Релиз доступен только по запросу. Дата релиза: 24 сентября 2020 Список изменений: * TfgCollectionView: - При использовании метода NotifyItemsRemoved выделение последующих элементов происходит со сдвигом. Исправлено. https://forum.fgx-native.com/topic/549-tfgcollectionview-%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5-%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%B0-%D0%BF%D1%80%D0%B8%D0%B2%D0%BE%D0%B4%D0%B8%D1%82-%D0%BA-%D1%81%D0%B4%D0%B2%D0%B8%D0%B3%D1%83-%D0%B2%D1%8B%D0%B4%D0%B5%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F * TfgEdit: - Регрессия: Задание фона через свойство BackgroundName не работало. Исправлено. * TfgForm/TfgControl: - Исправлено неверное определение ссылки на форму в TfgControl.Form. Теперь если форма встроена в другую, то она будет содержать ссылку на родительскую форму, а все вложенные в нее контролы будут ссылаться на нее. Если форма не встраивается, то она будет содержать nil ссылку.
  13. Вызывать ReloadItems не надо. Подтверждаю. Ошибку воспроизвел. Локально поправил. Исправление войдет в следующую версию.
  14. Download : The distributive is available by request only. Release d ate: 20 September 2020 Changelog: * Attention!: - The new property Autosize is enabled for TfgNavigationBar, TfgSwitch and TfgTrackBar by default. So you don't need to have a code for calculating height of NavigationBar. - If you are using non standard Navigation bar height, you have to turn OFF valu Autosize = []. * The new property Autosize was added for TfgNavigationBar, TfgSwitch and TfgTrackBar: - The property allows to enable automatic calculation required size of control. - The automatic calculation is processed only, if size dimension doesn't depends on Flex alignment settings. For example, if a component should be stratched, то автосайз в этом случае не будет применяться. * TfgLabel: - New property ContentPadding was added for correction text output area. - The LetterSpacing property was added for changing space between text glyphs. It's not supported in IDE! * TfgEdit: - New property ContentPadding was added for correction output area. - Now you can specify icon via TfgEdit.IconName, which is displayed on the left side of text. - Small fixes of TfgEdit appearance in IDE. New padding were added. Now the appearance is the same as on Android device. * TfgRadioButton: - The bug of wrong tint color of RadioButton was fixed. * TfgButton: - New properties TintColor and TintColorName were added for possibility recolor button to the required color. * Push-notification: - When developer used Push notification and communicate with other Android activities via Intent, Exception could occure. Fixed. https://forum.fgx-native.com/topic/527-tfgfirebasepushnotification-efgasserterror/?tab=comments#comment-2122 - If user tap on push-notification in Notification Center, when application is in background, OnReceiveNotification is invoked. * Android-Api: - New headers were added "android.provider.*" -> "Android.Api.Providers.*" * Demo samples: - "Android Api" -> "AlarmManager"
  15. Скачать: Релиз доступен только по запросу. Дата релиза: 20 сентября 2020 Список изменений: * !Внимание: - Свойство Autosize теперь включено по умолчанию для TfgNavigationBar, TfgSwitch и TfgTrackBar. Поэтому код по расчету высоты панели навигации можно теперь удалить. - Если вы используете нестандартную высоту панели навигации в своих целях, то вам НЕОБХОДИМО сбросить значение свойства Autosize = []. * Добавлено новое свойство Autosize для TfgNavigationBar, TfgSwitch, TfgTrackBar: - Свойство позволяет включить автоматический расчет ширины/высоты компонента. - Автоматический рассчет производится только, когда размер не зависит от настроек выравнивания Flex. Если компонент должен быть растянут, то автосайз в этом случае не будет применяться. * TfgLabel: - Добавлено новое свойство ContentPadding, отвечающее за возможность указать внутренний оступ, используемый для коррекции области отображения текста. - Новое свойство LetterSpacing позволяет указать межсимвольный интервал. Пока не поддерживается в дизайнере! * TfgEdit: - Используя новое свойство ContentPadding, можно менять внутренние оступы для коррекции области отображения содержимого. - Теперь можно указать иконку, отображаемую слева от текста. TfgEdit.IconName свойство. - Подправлено отображение TfgEdit в дизайнере. Добавлены отступы в начале и в конце поля ввода. Теперь внешний вид компонента идентичен виду на устройстве. * TfgRadioButton: - Исправлена ошибка из-за которой компонент использовал серый цвет для кнопки, вместо цвета акцента. * TfgButton: - Добавлены новые свойства TintColor и TintColorName позволяющие перекрасить кнопку в нужный цвет. * Push-уведомления: - При одновременном использовании пуш сервиса и взаимодействии с другими процессами, могла происходит ошибка приводящая к падению приложения. Исправлено https://forum.fgx-native.com/topic/527-tfgfirebasepushnotification-efgasserterror/?tab=comments#comment-2122 - Теперь, если пользователь нажимает на уведомление в центре уведомлений при свернутом приложении, будет срабатывать событие OnReceiveNotification. * Android-Api: - Добавлены новые заголовочные файлы для "android.provider.*" -> "Android.Api.Providers.*" * Демо проекты: - "Android Api" -> "AlarmManager"
  16. В ближайшем релизе 1.5.0.0 мы добавили пару небольших улучшений, которые немного помогут вам проще разрабатывать ваши мобильные приложения. 1. Отступы для TfgLabel В разработке пользовательского интерфейса довольно часто встречается задача визуального выделения текстовых меток/тегов. Обычно для визуального выделения используется фон в виде скругленного прямоугольника. Раньше такая задача решалась при помощи двух компонентов: Контейнер TfgLayout с требуемыми отступами для текста и с фоном BackgroundName в виде 9-path изображения. Метка TfgLabel, куда непосредственно выводится текст. Теперь же у TfgLabel есть специальное свойство ContentPadding, позволяющее добавить внутренние отступы, используемые при отображении текста. В результате метка легко получается на базе одного компонента TfgLabel с фоном BackgroundName и требуемыми отступами. 2. Оттенок для кнопки TfgButton Теперь для кнопки TfgButton добавлены новые свойства TintColor и TintColorName, позволяющие перекрасить системный цвет кнопки. 3. Android AlarmManager Мы добавили небольшой пример по использованию Java кода из FGX Native приложения. Новый демонстрационный пример показывает, как сделать на языке Java свой BroadcastReceiver и использовать его в связке с FGX Native приложением. Данный пример пригодится разработчикам, которым необходимо более тесная интеграция с Android API. 4. Автосайз iOS Так же мы с нуля реализовали TfgDrawerLayout для iOS drawer-iOS.mp4.648b868510783b05479fa65efce46878.mp4
  17. Скину в личку промежуточную сборку, как соберется.
  18. Всем доброго дня, При разработке кросс-платформенного приложения важной базовой составляющей является определение размеров компонентов. С одной стороны нет ничего проще, чем задать желаемый размер любому компоненту библиотеки FGX Native или задать правило выравнивания компонентов при помощи FlexBox. Однако, кросс-платформенная разработка накладывает определенные трудности в этом подходе. А именно зачастую размер компонентов зависит не только от других компонентов, но и от содержимого. И если с первым отлично справляется FlexBox, то со вторым в FGX Native нужно использовать метод для расчета размеров компонентов TfgControl.MeasureSize, и будем честны, это было временное решение. Мы всегда стараемся сделать библиотеку FGX Native удобной для использования, чтобы разработчик мог концентрироваться в коде на бизнес логике своего приложения, а не программной "настройке" UI. Одним из грядущих улучшений будет поддержка автоматического расчета размеров компонентов. Мы внедрили на нижнем уровне поддержку Autosize. Теперь на уровне появится новое свойство TfgControl.Autosize, которое отвечает за то, что именно нужно автоматически посчитать: ширину, высоту или обе величины. Если в ходе выравнивания компонента система понимает, что компонент имеет фиксированный размер, то в этом случае компонент может автоматически его рассчитать. Так например задание Autosize = [Height] для TfgTraсkBar автоматически посчитает нужную высоту компонента, а вот указание Autosize = [Width] для этого компонента ни на что не повлияет. Не смотря на то, что сам механизм внедрен на нижнем уровне, реально это свойство в ближайшем релизе будет доступно только для нескольких компонентов: TfgSwitch, TfgTrackBar, TfgNavigationBar и возможно TfgLabel. Если с TfgSwitch и TfgTrackBar в целом понятно, то вот на счет TfgNavigationBar стоит отдельно отметить, что теперь этот компонент умеет в автоматическом режиме расчета высоты учитывать отступы у формы SafeArea и наличие заголовка и подзаголовка. И если раньше необходимо было программно отслеживать изменения отступов области SafeArea в TfgForm.OnSafeAreaChanged и на основании значений отступов вычислять руками высоту панели навигации, то сейчас все это будет происходить автоматически. Данное нововведение особенно актуально в свете предстоящего появления iOS. Так как в iOS используются другие шрифты, размеры текста и размеры компонентов. И чтобы сделать действительно универсальное приложение без этой функциональности будет очень сложно. Всем хорошей рабочей недели!
×
×
  • Create New...