Everything posted by Yaroslav Brovin
-
Новые компоненты TfgVirtualListPicker / TfgNumberListPicker
Мы постоянно работаем над расширением возможностей библиотеки FGX Native. Чтобы разнообразие деталей в конструкторе росло, а создание приложений становилось все проще и быстрее. В новом релизе 1.9.2.0 мы добавили два новых компонента: TfgVirtualListPicker и TfgNumberListPicker. Эти компоненты позволяют выбрать одно значение из списка при помощи крутящегося барабана. В основном такие компоненты использовались при выборе даты и времени: TfgVirtualListPicker Этот компонент не хранит у себя элементы списка и работает подобно TfgCollectionView. А именно запрашивает все необходимые данные у разработчика через специальные события: OnGetItemsCount и OnGetItemText. Допустим у нас есть список городов. Для упрощения названия городов мы поместим в константный массив. У вас он может находится в базе данных или в любой другой модели данных: const Titles: array [0..6] of string = ('Saint-Petersburg', 'Moscow', 'Chelyabinsk', 'Sochi', 'Krasnodar', 'Voronej', 'Rostov-on-don'); Для полноценной работы компонента ему необходимо знать только: Количество элементов в списке. Оно указывается в событии OnGetItemsCount. procedure TFormMain.fgVirtualListPicker1GetItemCount(Sender: TObject; var ACount: Integer); begin ACount := Length(Titles); end; Текстовое название элемента, отображаемое в компоненте. Оно указывается в событии OnGetItemText. Если вы не указываете обработчик для этого события, то компонент по умолчанию использует надпись следующего формата "Item %d". Каждый элемент списка имеет свой индекс, по которому компонент получает текст элемента. procedure TFormMain.fgVirtualListPicker1GetItemText(Sender: TObject; const AItemIndex: Integer; var AText: string); begin AText := Titles[AItemIndex]; end; Это минимально необходимые действия для отображения списка: У компонента нет ограничения на максимально допустимое количество элементов в списке. Оно может быть абсолютно любым. Значит его можно использовать для списков любого размера. Когда пользователь выбирает элемент, срабатывают события OnChanged, OnItemSelected, через которые вы можете узнать индекс выделенного элемента. Внешний вид На текущий момент у компонента есть только одна настройка - это цвет текста элементов TextColor / TextColorName, которая по умолчанию завязана на цвет темы "Text\Text". Расширяемость Компонент TfgVirtualListPicker разработан для возможности создания своих расширений на его базе. Это значит, что вам не нужно реализовывать этот компонент для IDE, Android и iOS. Именно на его основе сделан следующий компонент TfgNumberListPicker. TfgNumberListPicker Этот компонент является кроссплатформенным расширением TfgVirtualListPicker и предлагает возможность выбрать вещественное число из указанного диапазона. Диапазон задается при помощи трех свойств: границы диапазона Min, Max и шага изменения сетки чисел Step. По умолчанию каждый элемент отображается в виде вещественного числа с двумя знаками после запятой. Однако, вы можете это поменять одним из любых способов: Указать стандартный формат через FormatKind = Integer. Указать свой произвольный форма через FormatKind = Custom и Format = 'Item %f' Указать свой обработчик события OnGetItemText. В остальном компонент позволяет использовать все возможности TfgVirtualListPicker.
-
Улучшения TfgToast
Тосты - это небольшие лаконичные информационные сообщения, которые всплывают внизу экрана и не блокируют доступ к содержимому приложения. Они пришли к нам из мира Андроида, где активно используются для информирования пользователей о протекающих процессах в мобильном приложении. В FGX Native данное уведомление представлено классом FGX.Toasts.TfgToast, позволяющим его отобразить на экране. В релизе 1.9.2.0 мы реализовали тосты для iOS, а так же выполнили ряд улучшений в архитектуре управления TfgToast, сделав ее такой же единообразной, как и в диалогах, пикерах и других сервисах. Новая архитектура Теперь вся работа по созданию TfgToast отведена фабрике TfgToastFactory. Через нее можно, как создать экземпляр уведомления для ручной настройки, так и просто отобразить уведомление. Быстро отобразить уведомление можно теперь так: TfgToastFactory.Show('Hello world!'); Было: TfgToast.Show('Hello world!'); Если вы хотите по какой-то причине вручную управлять уведомлением, вы можете его создать через метод: Toast := TfgToastFactory.CreateToast; Было: Toast := TfgToast.Create('Hello world!'); Однако, в этом случае, уничтожение уведомление лежит на ваших плечах. Обратная совместимость Мы временно оставили старые методы по отображению тостов. Однако, рекомендуем вам, по возможности перейти на новый вариант использования тостов через TfgToastFactory. Поскольку старый способы могли вводить разработчиков в заблуждение, так как метод TfgToast.Create совпадает по смыслу с конструктором, однако, им не является.
-
проблема с MeasureText или FillText?
Пока как временное решение можно включить WordWrap = true.
-
проблема с MeasureText или FillText?
Перенес в трекер:
-
[TfgCollectionView] При старте приложения иногда срабатывает PullToRefresh в iOS
Исправлено в 1.9.2.0.
-
fgCollectionView не срабатывает клик на fgImage1Tap
Исправлено в 1.9.2.0.
-
Проблемы с tint colour (iOS)
Исправлено в 1.9.2.0.
-
[TfgLabel] HTML Кодировка
Исправлено в 1.9.2.0.
-
is there a iOS trial version to test the library?
Hello, No, iOS is in alpha testing now and it's available only for clients at this moment. Thank you
-
fgCollectionView не срабатывает клик на fgImage1Tap
Пока не реализовано в iOS. на днях уже реализовал OnTouch событие и HitTest. На этой неделе займусь еще жестами и событием OnTap
-
1.9.1.0 Русский
Сделать демку сделал, а включить в инсталлятор забыл. Signature - Base.zip
-
1.9.1.0 English
Download: The distributive is available by request only. Release date: 30 January 2021 New ✨ The TfgComboBox component is implemented for iOS. The new component TfgSignature was ported from FGX for FMX library (Android). It allows to take signature from user in vector style, save it into TfgBitmap or in stream. The new sample about usage new component TfgSignature was added: "Components" -> "TfgSignature" -> "Basic sample". The implementation of system push-notification service (APS) was implemented for iOS (Hasn't tested yet!). Improvements 🙌 New methods overloaded methods TfgBitmap.SaveToStream and SaveToFile was added with possibility to specify quality. Now you can specify image format (PNG, JPEG),when you save TfgBitmap to stream. Bug Fixes 🐛 TfgEdit.Text could sometimes return irrelevant text (iOS). Specified assets could be ignored in some components, placed into TfgCollectionView. TfgButton didn't apply theme from first try, if button used not Default kind (Android, iOS). After saving TfgBitmap the application could crash, if you continue to use this bitmap (iOS). TfgCanvas didn't account font settings in IDE (Win). The adding menu item to TfgListMenu led to crash in runtime (iOS). TfgCollectionView The not nil value is required, when form is being closed (iOS).
-
1.9.1.0 Русский
Скачать: Релиз доступен только по запросу. Дата релиза: 30 января 2021 Новое ✨ Реализован компонент TfgComboBox для iOS. Портирован компонент TfgSignature предназначенный для ввода подписи (iOS, Android). Компонент позволяет получить подпись пользователя в векторном виде, сохранить ее в TfgBitmapили в поток. Добавлен новый пример показывающий использование нового компонента TfgSignature: "Компоненты" -> "TfgSignature" -> "Базовый пример". Добавлена реализация системного сервиса (APS) Push-уведомлений для iOS (Не протестировано!). Улучшения 🙌 Добавлены перегруженные версии методов TfgBitmap.SaveToStream и SaveToFile с возможностью указать качество сохранения. Теперь при сохранении TfgBitmap в поток, можно указывать формат изображения (PNG, JPEG). Исправление ошибок 🐛 TfgEdit.Text иногда мог возвращать неактуальный текст (iOS). У некоторых компонентов, используемых в TfgCollectionView, могли слетать ресурсы. У TfgButton при использовании не Default вида тема могла применяться не с первого раза. При работе с TfgBitmap после сохранения в файл приложение могло падать (iOS). TfgCanvas не учитывал параметры шрифта в IDE при работе с текстом (Win). Добавление пункта меню в рантайме TfgListMenu приводило к ошибке (iOS). TfgCollectionView Требуется непустое значение Owner при закрытии дочерней формы (iOS).
-
[TfgCollectionView] Требуется непустое значение Owner при закрытии дочерней формы
Падает только, когда у второй формы стоит DefaultCloseAction = Free. Исправлено в 1.9.1.0.
-
[TfgCollectionView] При старте приложения иногда срабатывает PullToRefresh в iOS
Гляну
-
[TfgListMenu] Добавления пункта меню в рантайме - Access Violation
Исправлено в 1.9.1.0.
-
[TfgListMenu] Добавления пункта меню в рантайме - Access Violation
Ну прямо показательный репорт баги 😄 Всегда бы так 😀 Грех сразу не поправить 😄
-
solution for print Report form Fmx fast Report or Pdf Files to bluetooth printer
FastReport же, вроде, нет для мобил?
-
solution for print Report form Fmx fast Report or Pdf Files to bluetooth printer
Hello, As I know FastReport for FMX doesn't support Android and iOS. So there are no solution. But I think you can open generated pdf file in other Android/iOS applications. Other way is to implement bluethooth printer protocol yourself. Thank you
-
Есть ли возможность показывать графики, диаграммы
Добрый день, Компонентов для отрисовки графиков нету. Но их можно нарисовать самостоятельно через TfgPaintBox и TfgCanvas.
-
Как воспроизвести аудиофайл?
Судя по документации еще надо указать специальный режим для фонового выполнения. Однако, указав его, все равно звук не работает. Посмотрю еще.
-
Как воспроизвести аудиофайл?
В целом посмотрел. Сделал все, как по документации, но пока не работает: procedure TFormMain.PlaySound(const AAssetName: TfgAssetName); var AudioFileUrl: NSURL; Asset: TfgAssetFile; ErrorPtr: Pointer; Error: NSError; Session: AVAudioSession; d: NSTimeInterval; begin if TfgAssetsManager.Current.Find<TfgAssetFile>(AAssetName, Asset) then begin Session := TAVAudioSession.OCClass.sharedInstance; Session.setCategory(AVAudioSessionCategoryPlayback, @ErrorPtr); if ErrorPtr <> nil then begin // Не удалось задать категорию воспроизведения звуков Error := TNSError.Wrap(ErrorPtr); raise Exception.Create(NSStrToStr(Error.localizedDescription)); end; FAudioPlayer := TAVAudioPlayer.Create; AudioFileUrl := StrToNSUrl(Asset.FileName); FAudioPlayer := TAVAudioPlayer.Wrap(FAudioPlayer.initWithContentsOfURL(AudioFileUrl, @ErrorPtr)); if ErrorPtr <> nil then begin // Не удалось открыть файл Error := TNSError.Wrap(ErrorPtr); raise Exception.Create(NSStrToStr(Error.localizedDescription)); end; if FAudioPlayer.prepareToPlay then FAudioPlayer.play; end else raise Exception.CreateFmt('Cannot play sound. Asset is not available: assetName="%s"', [AAssetName]); end; Завтра продолжу. Файл открывается, но не может забуферизироваться.
-
1.9.0.1 English
Download: The distributive is available by request only. Release date: 20 January 2021 Bug Fixes 🐛 If TfgBottomSheetLayout.ContentShadingSettings.Enabled is True, main content was black on the application start. TfgBottomSheet didn't allow to change height in IDE.
-
1.9.0.1 Русский
Скачать: Релиз доступен только по запросу. Дата релиза: 20 января 2021 Исправление ошибок 🐛 При запуске проекта с TfgBottomSheetLayout.ContentShadingSettings.Enabled = True, основное содержимое сразу и полностью заполняется цветом. В дизайнере невозможно было поменять высоту TfgBottomSheet.
-
[TfgBottomSheetLayout] При запуске проекта с ContentShadingSettings.Enabled = True, основное содержимое сразу заполняется цветом
Исправлено в 1.9.0.1.