FMXPixie.dll для Inno Setup

DLL FMXPixie.dll для Inno Setup 20.10

Нет прав для скачивания

audiofeel

Ветеран
audiofeel добавил(а) новый ресурс:

FMXPixie - FMXPixie - HTML-интерфейс для Inno Setup через DLL

FMXPixie - HTML-интерфейс для Inno Setup через DLL

В основе лежит уже существующий проект Pixie - HTML-рендерер на Delphi. Я сделал DLL-обёртку, чтобы можно было использовать его из Inno Setup и отображать HTML прямо в окне установщика.

Идея в том, чтобы делать интерфейс не из отдельных FMX-контролов, а на обычном HTML и CSS. При этом сама установка, работа с файлами, задачами и...

Узнать больше об этом ресурсе...
 
audiofeel обновил(а) ресурс FMXPixie новой записью:

FMXBridge - последние изменения

Описание изменений:

Исправлена потеря событий клика при активном или оставшемся выделении текста.
  • Исправлена обработка MouseUp: вместо HasSelection используется HasRangeSelection, чтобы отличать фактический диапазон выделения от состояния внутренней карты выделения.
  • Добавлена очистка предыдущего выделения при новом нажатии мыши, чтобы оно не блокировало обработку следующего клика.
  • Добавлен порог перетаскивания 4 CSS-пикселя:...

Узнать больше об этом обновлении...
 
audiofeel обновил(а) ресурс FMXPixie новой записью:

FMXPixie - последние изменения

Раньше Pixie сам обрабатывал наведение и менял CSS
XML:
.card:hover {
  background: green;
}

Посмотреть вложение 10488

Но выполнить свой код Pascal Script именно в момент наведения было нельзя. Теперь можно.

Пример: выполнить действие при наведении
Допустим, у HTML-элемента есть id="tile-alpha". Мы хотим при наведении изменить текст другого элемента на форме, а при уходе курсора вернуть другой текст.
XML:
procedure...

Узнать больше об этом обновлении...
 
audiofeel обновил(а) ресурс FMXPixie.dll для Inno Setup новой записью:

FMXPixie - последние изменения

Небольшое обновление FMXPixie

Добавлена настройка полос прокрутки, поскольку стандартного CSS-оформления для них недостаточно.
Теперь можно настраивать ширину, отступ, минимальную высоту ползунка, цвета ползунка и дорожки, а также видимость скроллбара.

code_language.pascal:
procedure SetScrollbarWidth(FValue: Integer);
procedure SetScrollbarMargin(FValue: Integer);
procedure SetScrollbarMinThumbHeight(FValue: Integer);
procedure...

Узнать больше об этом обновлении...
 
Тут поступил вопрос: человек привык хранить HTML и CSS отдельно. У него своя тема оформления, свои интересные решения, которыми не особо хочется делиться. Но и встраивать всё вручную в скрипт Inno Setup неудобно.

Как это можно сделать? Попробовал такой вариант: при компиляции HTML и CSS автоматически встраиваются в скрипт, а при запуске передаются в FMXPixie уже из строк.

Проверил - вроде всё работает. В папке Temp никаких отдельных файлов темы нет.

С передачей TStream через DLL пока не разбирался, да и хз получиться или нет. Тут получилось решить задачу довольно просто.

code_language.pascal:
#define DemoAppName "FMXPixie HTML + CSS Embedded Demo"
#define DemoAppVersion "1.0"

#define HtmlSource AddBackslash(SourcePath) + "Theme\page.html"
#define CssSource  AddBackslash(SourcePath) + "Theme\style.css"

#if !FileExists(HtmlSource)
  #error Missing compile-time HTML source: Theme\page.html
#endif
#if !FileExists(CssSource)
  #error Missing compile-time CSS source: Theme\style.css
#endif

#define HtmlHandle
#define HtmlLine
#sub EmitHtmlLine
  #define HtmlLine = FileRead(HtmlHandle)
  #emit "    '" + StringChange(HtmlLine, "'", "''") + "' + #13#10 +"
#endsub

#define CssHandle
#define CssLine
#sub EmitCssLine
  #define CssLine = FileRead(CssHandle)
  #emit "    '" + StringChange(CssLine, "'", "''") + "' + #13#10 +"
#endsub

[Setup]
AppName={#DemoAppName}
AppVersion={#DemoAppVersion}
CreateAppDir=no
Uninstallable=no
OutputBaseFilename=FMXPixie_HtmlCss_Embedded_Demo

[Files]
#if SetupSetting("SetupArchitecture") == "x64"
Source: "Modules\FMXPixie_x64.dll"; DestName: "FMXPixie.dll"; Flags: dontcopy
#else
Source: "Modules\FMXPixie_x86.dll"; DestName: "FMXPixie.dll"; Flags: dontcopy
#endif

[Code]
#include "Modules\FMXPixieHandle.iss"

const
  DEMO_FORM_WIDTH = 760;
  DEMO_FORM_HEIGHT = 500;

  HtmlText =
#for {HtmlHandle = FileOpen(HtmlSource); HtmlHandle && !FileEof(HtmlHandle); ""} EmitHtmlLine
    '';
#expr FileClose(HtmlHandle)

  CssText =
#for {CssHandle = FileOpen(CssSource); CssHandle && !FileEof(CssHandle); ""} EmitCssLine
    '';
#expr FileClose(CssHandle)

var
  FMXForm: FForm;
  View: FPixieHtmlView;

procedure FMXInit;
begin
  FMXForm := InitFormHandle;
  View := InitPixieHtmlView;
end;

function InitializeSetup(): Boolean;
begin
  FMXInit;
  Result := True;
end;

procedure InitializeWizard;
begin
  EmptyWizardForm(DEMO_FORM_WIDTH, DEMO_FORM_HEIGHT);
  FMXForm.FCreateBackdropForm(WizardForm.Handle, btMain, True, True);

  View.FCreate(FMXForm.Handle);
  View.Left(0);
  View.Top(0);
  View.Width(DEMO_FORM_WIDTH);
  View.Height(DEMO_FORM_HEIGHT);
  View.ColorScheme(pcsDark);

  View.UserCss(CssText);
  View.LoadFromString(HtmlText);

  FMXForm.Show;
end;

procedure DeinitializeSetup;
begin
  FMXPixieShutDown;
end;
 

Вложения

Штука интересная, попробую свой инсталлятор на неё перевести. Дизайн гораздо упрощается через html + css.
 
Назад
Сверху