FMXPixie.dll для Inno Setup

DLL FMXPixie.dll для Inno Setup 23.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;
 

Вложения

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

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

Добавил новую обёртку FPixiePaintBox.

Это компонент для собственной отрисовки: линии, фигуры, заливки, дуги, текст и т. д. Можно настраивать цвета, перо, шрифт и управлять перерисовкой.

Пригодится, когда возможностей HTML/CSS в Pixie не хватает. Например, для небольших графиков, индикаторов, схем, нестандартных элементов интерфейса или динамической графики.

Пример-тест-демо в комплекте FMXPixie - PaintBox Demo.iss

Узнать больше об этом обновлении...
 
Рекомендуется рисовать checkbox и radio через span с CSS, оставляя обычный input для состояния и переключения.

Так проще настраивать внешний вид и можно получить небольшой выигрыш в производительности, особенно при большом количестве элементов.

Пример из
XML:
<input type="checkbox" id="chk_01" style="display:none;" />
<label class="check-option" for="chk_01">
  <span class="check-glyph">
    <span class="check-tick">&#10003;</span>
  </span>
  <span class="option-name">Core runtime</span>
  <span class="option-state">
    <span class="state-off">OFF</span>
    <span class="state-on">ON</span>
  </span>
</label>

Состояние input:checked через CSS меняет оформление переключателя и текст OFF/ON. Без JavaScript и нативных FMX-контролов.
 

Вложения

Что могу сказать - либа очень понравилась, это новая имба в оформлении инсталляторов для Inno Setup. Накидал для теста одну страничку инсталлятора. Работает даже на линуксе, кроме шрифта и фона (возможно нужно по-другому его включать чтобы завёлся, не разбирался особо).

Отображение на Windows:
1792734766807.png

Отображение на Linux Mint (wine-10.0):
1792736884013.png
 
Последнее редактирование:
Что могу сказать - либа очень понравилась, это новая имба в оформлении инсталляторов для Inno Setup. Накидал для теста одну страничку инсталлятора. Работает даже на линуксе, кроме шрифта и фона (возможно нужно по-другому его включать чтобы завёлся, не разбирался особо).

Отображение на Windows:
Посмотреть вложение 10508

Отображение на Linux Mint (wine-10.0):
Посмотреть вложение 10510
А шрифты на вине разве вообще есть кроме стандартного. Думаю если подкинуть через стили шрифт - он обязательно заработает. Или же уже?
 
А шрифты на вине разве вообще есть кроме стандартного. Думаю если подкинуть через стили шрифт - он обязательно заработает. Или же уже?
Не пробовал, да и не вижу смысла под линуху мутить что-то, просто скинул что работает отлично в вайн среде))
 
OpenSetup на Pixie. Но с оговорками и костылями поверх Pixie. Возможно если кое кто его поправит - выложит
 

Вложения

  • Снимок экрана 2026-10-24 105454.png
    Снимок экрана 2026-10-24 105454.png
    279.5 KB · Просмотры: 7
  • Снимок экрана 2026-10-24 105452.png
    Снимок экрана 2026-10-24 105452.png
    271.8 KB · Просмотры: 7
  • Снимок экрана 2026-10-24 105447.png
    Снимок экрана 2026-10-24 105447.png
    265.7 KB · Просмотры: 7
  • Снимок экрана 2026-10-24 101040.png
    Снимок экрана 2026-10-24 101040.png
    313.9 KB · Просмотры: 8
  • Снимок экрана 2026-10-24 104459.png
    Снимок экрана 2026-10-24 104459.png
    281.4 KB · Просмотры: 7
Назад
Сверху