Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
1. Получить путь/имя текущего рабочего фона рабочего стола
code_language.pascal:function GetDesktopImg: WideString; external 'GetDesktopImg@files:FMXBridge.dll stdcall delayload';
2. Получить "средний" цвет из изображения (FMX)
code_language.pascal:function GetImgColor(const AImage: UnicodeString): TAlphaColor; external 'GetImgColor@files:FMXBridge.dll stdcall delayload';
3. Диалог выбора папок
code_language.pascal:function BrowseDialog(Owner: HWND; const Caption: WideString; var InDir: WideString; var OutDir: WideString): Boolean; external 'BrowseDialog@files:FMXBridge.dll stdcall delayload';
4. Диалог открытия файла
code_language.pascal:function OpenDialog(Owner: HWND; const Caption, DefExt, Filter, InitialDir: WideString; var FileName: WideString): Boolean; external 'OpenDialog@files:FMXBridge.dll stdcall delayload';
5. Диалог сохранения файла
code_language.pascal:function SaveDialog(Owner: HWND; const Caption, DefExt, Filter, InitialDir: WideString; var FileName: WideString): Boolean; external 'SaveDialog@files:FMXBridge.dll stdcall delayload';
6. Чтение текста из файла
code_language.pascal:function ReadAllText(const FileName: WideString; out FText: WideString): Boolean; external 'ReadAllText@files:FMXBridge.dll stdcall delayload';
7. Запись текста в файл (перезапись)
code_language.pascal:function WriteAllText(const FileName, FText: WideString): Boolean; external 'WriteAllText@files:FMXBridge.dll stdcall delayload';
8. Добавление текста в конец файла
code_language.pascal:function AppendAllText(const FileName, FText: WideString): Boolean; external 'AppendAllText@files:FMXBridge.dll stdcall delayload';
Добавлено:
# FireMonkey FMX: Property Animations and Triggers (Full List)
Примеры:
code_language.pascal:TObject(TESTEdit.GetSearchBtnObject): begin if OpenDialog(FMXForm.HandleHWND, 'Выберите том', 'bin', 'BIN файлы|*.bin', 'C:\', FileName) then begin MsgBox('Выбран том: ' + FileName, mbInformation, MB_OK); end; end; TObject(TESTButton.GetObject): begin OldDir:= ExpandConstant('{sd}'); if BrowseDialog(FMXForm.HandleHWND, 'Выбор папки установки', OldDir, NewDir) then begin WizardForm.DirEdit.Text:= NewDir; TESTEdit.Text(WizardForm.DirEdit.Text); end; end; TObject(TESTPressedButton.GetObject): begin TextToSave := 'Пример текста для сохранения'; if SaveDialog(FMXForm.HandleHWND, 'Сохранить текстовый документ', 'txt', 'Текстовые документы|*.txt', 'C:\', FileName) then begin if WriteAllText(FileName, TextToSave) then MsgBox('Файл успешно сохранён в: ' + FileName, mbInformation, MB_OK) else MsgBox('Не удалось сохранить файл: ' + FileName, mbError, MB_OK); end; end;
1. В обновлении исправлена проблема, из-за которой окно могло некорректно восстанавливаться после сворачивания в Windows 10.
Причиной оказалось служебное message-окно FMX (ApplicationHWND), которое перехватывало управление состояниями окна. Теперь используетсячто убирает влияние на сворачивание и разворачивание.code_language.pascal:SetParent(ApplicationHWND, HWND_MESSAGE)
2. Добавлен альтернативный режим создания формы для Windows 10.
Теперь при создании окна может использоваться эффект размытия фонаЭто улучшает внешний вид и повышает совместимость в системах, где эффекты Mica, Tabbed и Acrylic не поддерживаются или не работают.code_language.pascal:(Accent.AccentState := ACCENT_ENABLE_BLURBEHIND)
3. Добавлено обновление для установки цвета рамки окна черезНа Windows 10 этот параметр игнорируется.code_language.pascal:DwmSetWindowAttribute (DWMWA_BORDER_COLOR)
![]()
![]()
Исправлена проблема с фокусом: форма больше не теряет его в пользу Inno Setup при запуске.
Восстановлена стандартная системная анимация сворачивания.
1. В новой версии убраны все псевдотипы (TFMXObject, IForm и т.п.).
Теперь используется только один универсальный тип — NativeInt.
Не нужно объявлять десятки фиктивных типов в Inno Setup.![]()
2. Исправлено - FShadowText
3. Запросы - (Обратная связь) Теперь при попытке открыть медиафайл, который не поддерживается, вместо пустого Exception появляется сообщение:
![]()
4. Форма теперь независимая от Inno Setup; кнопка "Свернуть" минимизирует напрямую через HWND.
code_language.pascal:TObject(TitleBar.GetObjectMinBtn): begin MinimizeWindow(FMXForm.HandleHWND); // MinimizeWindow(WizardForm.Handle); end;
1. Изменил возвращаемый тип функций с LongInt на HWND, потому что так правильно с точки зрения Delphi.
2. Теперь окно поддерживает обновление миниатюры в панели задач в реальном времени.code_language.pascal:type FForm = interface(IUnknown) '{C1EF3F26-12BF-421C-9AAC-4FFB9E9D72A1}' function FCreateMicaForm(WParent: HWND; FDark, Round: Boolean): HWND; function FCreateTabbedForm(WParent: HWND; FDark, Round: Boolean): HWND; function FCreateAcrylicForm(WParent: HWND; FDark, Round: Boolean): HWND; function FCreateBlankForm(WParent: HWND; FColor: TAlphaColor; const FImage: WideString; Round: Boolean): HWND; function FCreateImageForm(WParent: HWND; FColor: TAlphaColor; const FImage: WideString; Opacity: Boolean): HWND; function FCreateGradientForm(WParent: HWND; FColor1, FColor2: TAlphaColor; FStyle: TGradientStyle; Round: Boolean): HWND;
Ранее миниатюра была пустой, теперь отображается текущее содержимое окна.
3. Восстановлена анимация сворачивания в панель задач.
Тестирование ещё требуется![]()
Добавлено - загрузка файлов
Позволяет скачивать файлы с отображением прогресса и скорости, с возможностью остановки через колбэк или глобально через AbortAllDownloads. Поддерживает последовательную загрузку нескольких файлов, обновление интерфейса через TDownloadCallback и сохраняет данные напрямую в файл через THTTPClient.
Пример
code_language.pascal:var Url, FileName: WideString; begin Url := 'https://example.com/file.zip'; FileName := 'C:\Downloads\file.zip'; DownloadFile(Url, FileName, function(const Url, LocalFileName: WideString; const ProgressCurrent, ProgressMax, SpeedKBps: Int64): Boolean begin // Обновляем прогрессбар и текст ProgressBar.Value := ProgressCurrent; ProgressText.Text := Format('%d%% (%d KB/s)', [ProgressCurrent * 100 div ProgressMax, SpeedKBps]); Result := False; // вернуть True, чтобы остановить загрузку end); end;
Добавлено:
- Для FCheckBoxTree — двустороннее управление чекбоксами секции (главный ↔ дочерние, включая радиокнопки).
- Для FSpeedButton — процедура Pressed(FValue: Boolean), гарантирует, что кнопка визуально выглядит нажатой при старте.