Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
FMXBridge — кнопки на миниатюре панели задач
Добавил новый компонент FThumbButtons.
Теперь можно добавлять собственные кнопки прямо в миниатюру окна на панели задач Windows и назначать им любые действия.
Поддерживаются: До 7 кнопок.
Свои иконки или глифы из шрифтов.
Подсказки для кнопок.
Управление видимостью и доступностью.
Обработка нажатий с передачей индекса кнопки в Inno Setup.
Всё настраивается из Pascal Script. Можно сделать управление плеером, переключение страниц или любые другие действия.
В демо показаны возможности компонента и работа с BASSPlayer.
Пример: Example_BASSPlayer.iss. Example_ThumbButtons.iss
1. Массовое изменение сигнатур
Практически во ВСЕХ интерфейсах метод создания переделан:
Т.е. раньше FCreate возвращал Handle/..., теперь просто инициализирует объект, а Handle берётся через .Handle.
2. Удалённые типы-обёртки (заменены на TFmxObject)
Убраны алиасы (все были NativeInt):
IMenuItem, IMainMenu, ISearchBox, IListBoxGroupFooter, IListBoxGroupHeader, IListBoxHeader, IListBoxItem, ITreeViewItem, ICamera, IControl3D, ILight, IDummy, IColorMaterialSource, ITextureMaterialSource, ILightMaterialSource, TArrayOfHWND.
Остались только: TFmxObject, IImageList, ITabItem, IMaterialSource.
3. Что ДОБАВЛЕНО (новые интерфейсы и обёртки)
FAnimation - базовый интерфейс анимаций + InitAnimation (обёртка над TAnimation).
FSpinner - новый контрол + enum TSpinnerKind (Win11, Arcs, DoubleBounce, FlipPlane, Pulse, ArcsRing, Ring, ThreeDots, Wave, BallClipRotate…) + InitSpinnerHandle.
FMediaPlayer (переименован из FVideoPlayer) + InitMediaPlayer.
FForm: методы ChangeDarkMode, OnShow, OnActivate, OnDeactivate.
FMsgForm: методы Caption, StartWindowDrag.
FLockScreen: метод ShowDelay.
FSVGImage: SetFocus, CanFocus, LoadFromText (замена SVGText).
FMemo: события OnChange, OnChangeTracking.
FWinTitleBar: переименования - ChangeTheme>ChangeDarkMode, ExitBtnEnabled>CloseBtnEnabled, ExitBtnOnClick>CloseBtnOnClick, GetObjectExitBtn>GetObjectCloseBtn.
Enum TCanvasQuality: значения переименованы - cqSystemDefault>SystemDefault и т.д.
4. Что УДАЛЕНО
FMacTitleBar и InitMacTitleBarHandle - выпилены полностью.
FVideoPlayer - заменён на FMediaPlayer.
FWinTitleBar сильно урезан: удалены Cursor, SetClipParent/Children, BringToFront, SendToBack, Icon, IconVisible, Title, TitleVisible, TitleFontSetting, TitleTextSetting, MinBtnVisible, MinBtnEnabled, GetLeft, GetTop, GetWidth, GetObjectMinBtn, GetObject.
FLockScreen урезан: удалены AutoActivate, AutoActivateEnabled, BackPicture, BackStroke*, BackOpacity, BackText*, BackHandle.
FSVGImage: удалены MarginWrapMode, WrapMode, FixedColor, SaveToFile, BitmapZoom, GrayScale, DisableInterpolation, GetSVGText.
FForm / FMsgForm: удалён ChangeWindowTheme (заменён на ChangeDarkMode).
Dialogs: удалена BrowseLegacyDialog; в BrowseDialog / OpenDialog / SaveDialog убран параметр Owner: HWND.
5. Багфиксы
FTimer.Interval: было TAlphaColor > стало Cardinal. Это исправление очевидного бага (интервал в мс не может быть цветом).
Изменения затрагивают внешний API и сигнатуры интерфейсов, поэтому совместимость со старым кодом существенно нарушена: код, использующий изменённые методы, типы и GUID, потребуется адаптировать.
Оптимизирован PICSHOW: снижена фоновая нагрузка и улучшена работа с изображениями высокого разрешения.
WebP
Добавил поддержку WebP, в том числе анимированных WebP.
Теперь для этого Skia не нужна - декодирование и отображение WebP сделаны отдельно в FMXBridge.
Почему отдельная обёртка: обычный TImage и так нормально работает с изображениями, а добавление туда анимации и связанных с ней настроек только запутало бы пользователя. Поэтому для анимированных WebP сделал отдельную обёртку FWebPImage которая умеет загружать WebP, проигрывать и ставить анимацию на паузу, останавливать её, переключать кадры вручную, получать количество кадров, их длительность и количество циклов, а также отслеживать смену кадра.
Плюс у него есть обычные свойства TImage: размер, положение, Align, Margins, Padding, Opacity, поворот, Visible, HitTest и т. д.
Важно: если в проекте включён Skia, FWebPImage использовать не получится. Для него нужен обычный FMX-режим без Skia.
теперь можно задавать свой курсор даже анимированный
пример
code_language.pascal:Source: "Files\Cursor\Dark.ani"; Flags: dontcopy FMXForm.SetCursor(ExtractAndLoad('Dark.ani'));
Добавлены два новых контрола:
FGlassRectangle - Liquid Glass
Поддерживает:
- размытие фона;
- преломление изображения;
- эффект объёма и оптической толщины;
- дисперсия;
- поддержка скруглённых углов;
- отдельная настройка GlassAmount и BlurAmount.
- стандартные свойства FMX-контрола.
FBlurRectangle - Blur
Отдельный контрол только для размытия содержимого под ним, без эффекта стекла.
Поддерживает:
- настройку силы размытия;
- скруглённые углы;
- стандартные свойства FMX-контрола.
![]()
![]()
Разделение x86 / x64
В этом обновлении разделил сборки FMXBridge.dll для двух архитектур:
- FMXBridge_x86.dll - Win32
- FMXBridge_x64.dll - Win64
Теперь Inno Setup просто выбирает нужную сборку в зависимости от архитектуры:
Код:[Setup] SetupArchitecture=x64 [Files] #if SetupSetting("SetupArchitecture") == "x64" Source: "Modules\sk4d_x64.dll"; DestName: "sk4d.dll"; Flags: dontcopy Source: "Modules\FMXBridge_x64.dll"; DestName: "FMXBridge.dll"; Flags: dontcopy #else Source: "Modules\sk4d_x86.dll"; DestName: "sk4d.dll"; Flags: dontcopy Source: "Modules\FMXBridge_x86.dll"; DestName: "FMXBridge.dll"; Flags: dontcopy #endif
В связи с разделением по архитектурам в этой версии пришлось отказаться от статической линковки BASS. Теперь BASS находится внутри FMXBridge.dll и при необходимости извлекается во временную папку.
Также обновлено:
BASS - 2.4.18.23
Skia4Delphi - 7.3.0 (Skia 151.0.0)
Обновление FBASS Player
В компонент FBASS Player добавлена встроенная визуализация спектра воспроизводимого аудио.
Возможности:
1 - Анализ выполняется на основе BASS_DATA_FFT4096.
2 - Используется логарифмическое распределение частот.
3 - Уровень сигнала преобразуется в децибелы с последующей нормализацией.
4 - Рабочий диапазон спектра ограничен приблизительно 50–18000 Гц.
5 - По умолчанию используется 16 полос.
6 - Отображение выполняется без искусственного сглаживания.
7 - Добавлена возможность настройки внешнего вида спектра:
code_language.pascal:procedure SetSpectrum(FParent: TFmxObject; FLeft, FTop, FHeight: Single); procedure BarColor(Value: TAlphaColor); procedure BarWidth(Value: Single); procedure BarSpacing(Value: Single); procedure BarRadius(Value: Single);
Спектроанализатор является частью FBASS Player
![]()
Полностью переработан компонент FWinTitleBar
Интерфейс компонента был переработан и расширен:
code_language.pascal:FWinTitleBar = interface(IUnknown) '{31E29020-AF92-4FDB-9067-B8C573804370}' function FCreate(FParent: TFmxObject; FDark: Boolean): TFmxObject; procedure Cursor(FCursor: TCursor); procedure Height(FHeight: Single); procedure Offset(PY: Single); procedure SetClipParent(FValue: Boolean); procedure SetClipChildren(FValue: Boolean); procedure BringToFront; procedure SendToBack; procedure SetColor(FColor: TAlphaColor); procedure SetGradient(FColor1, FColor2: TAlphaColor; FStyle: TGradientStyle); procedure SetGradientLinearAngle(FAngle: Single); procedure SetGradientRadialAngle(FAngle: Single); procedure SetGradientPosition(X1, Y1, X2, Y2: Single); procedure Icon(const FImage: WideString); procedure IconVisible(FVisible: Boolean); procedure Title(const FText: WideString); procedure TitleVisible(FVisible: Boolean); procedure TitleFontSetting(const FontName: WideString; FontSize: Single; FontColor: TAlphaColor); procedure TitleTextSetting(FWordWrap: Boolean; FHorzAlign, FVertAlign: TTextAlign); procedure MinBtnVisible(FVisible: Boolean); procedure ExitBtnEnabled(FEnabled: Boolean); procedure MinBtnEnabled(FEnabled: Boolean); procedure ChangeTheme(FDark: Boolean); function GetLeft: Single; function GetTop: Single; function GetHeight: Single; function GetWidth: Single; function GetObjectExitBtn: TFmxObject; function GetObjectMinBtn: TFmxObject; function GetObject: TFmxObject; procedure ExitBtnOnClick(Event: TNotifyEvent); procedure MinBtnOnClick(Event: TNotifyEvent); function Handle: TFmxObject; end;
Упрощение компонента
Удалены возможности, не относящиеся к назначению титлбара:
1 - цвет Stroke;
2 - фоновое изображение;
3 - тень.
Эти параметры не соответствуют стандартному поведению заголовка окна и были исключены из компонента.
Автоматическое получение иконки и заголовка
Теперь титлбар автоматически использует:
1 - иконку, заданную для исполняемого файла Inno Setup;
2 - заголовок (Caption) исполняемого файла.
При необходимости их по-прежнему можно заменить вручную с помощью методов Icon() и Title().
Встроенная отрисовка системных кнопок
code_language.pascal:procedure TFWinSysButton.SetCloseIcon; var P: TPathData; begin P := TPathData.Create; try P.MoveTo(PointF(0.7, 0)); P.LineTo(PointF(5, 4.3)); P.LineTo(PointF(9.3, 0)); P.LineTo(PointF(10, 0.7)); P.LineTo(PointF(5.7, 5)); P.LineTo(PointF(10, 9.3)); P.LineTo(PointF(9.3, 10)); P.LineTo(PointF(5, 5.7)); P.LineTo(PointF(0.7, 10)); P.LineTo(PointF(0, 9.3)); P.LineTo(PointF(4.3, 5)); P.LineTo(PointF(0, 0.7)); P.ClosePath; FIcon.Data.Assign(P); finally P.Free; end; end; procedure TFWinSysButton.SetMinimizeIcon; var P: TPathData; begin P := TPathData.Create; try P.MoveTo(PointF(0, 0)); P.LineTo(PointF(10, 0)); P.LineTo(PointF(10, 1)); P.LineTo(PointF(0, 1)); P.ClosePath; FIcon.Data.Assign(P); FIcon.Width := 10; FIcon.Height := 1; finally P.Free; end; end;
По многочисленным просьбам пользователей кнопкам больше не требуется задавать StyleLookup.
Кнопки сворачивания и закрытия теперь полностью рисуются самим компонентом, что:
1 - упрощает использование;
2 - избавляет от зависимости от FMX-стилей;
3 - обеспечивает одинаковый внешний вид на всех проектах.
В связи с этим добавлена поддержка переключения темы оформления:
1 - светлая;
2 - тёмная.
Для этого используется метод:
code_language.pascal:procedure ChangeTheme(FDark: Boolean);
Новые возможности формы
В интерфейс формы добавлены два новых метода:
code_language.pascal:procedure CanvasQuality(FCanvasQuality: TCanvasQuality); procedure Caption(const FText: WideString);
CanvasQuality
Полностью повторяет поведение свойства TForm.Quality из FMX и позволяет управлять качеством отрисовки содержимого формы.
Поддерживаются три режима:
SystemDefault - используются настройки платформы (обычно включает сглаживание).
HighPerformance - максимальная производительность и скорость отрисовки.
HighQuality - приоритет качеству изображения с использованием полного антиалиасинга.
Caption
Позволяет изменить заголовок окна программно. Метод является аналогом свойства TForm.Caption и также используется титлбаром при автоматическом отображении текста заголовка.
Основное изменение - наконец разобрались с правильной схемой владения окнами.
Раньше была неправильная модель: FMX-окно считалось отдельным top-level окном, а Inno Setup выступал просто как внешний хозяин. Из-за этого начали появляться побочные эффекты с окнами, отображением в системе.
Сейчас сделано как в обычном приложении:
окно FMX имеет правильный Owner через Application;
убрана лишняя независимость окна от приложения;
поведение окна стало ближе к обычному FMX-приложению.
После этого пришлось заново пройтись по внутреннему позиционированию и размеру клиентской области. Исправлена работа с client area - теперь содержимое окна правильно располагается относительно реального клиентского пространства, а не относительно внешнего размера окна.
Отдельно вынесена работа с окном:
скрытие стандартного заголовка;
работа с рамками;
изменение поведения окна Windows.
Эти вещи теперь делаются на уровне FMX.Platform.Win, где им и место, а не через внешние обходные решения.
Также расширен BASS-модуль:
воспроизведение отдельных файлов;
загрузка папок с музыкой;
смена папки во время работы;
playlist;
callback прогресса;
управление воспроизведением.
Исправлено поведение служебных окон сообщений:
окна больше не появляются в AeroPeek.