FMXInno

DLL FMXInno October 27, 2024

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

reklavaro

Мимокрокодил
Добрый день BLACKFIRE69. Помогите пожалуйста, поменять цвет надписи "DiskUsed =• Disk Space Used:" в скрипте:
2. Updated '1_Original_Inno_Example-mod.iss' example.
Пытаюсь изменить цвет надписи "DiskUsed =• Disk Space Used:" в блоке [CustomMessages]. И с этим возникают проблемы. Я нашел блок кода (чуть ниже) который отвечает за это, но угадать цвет у меня не получается. Ну к примеру код цвета FF3DFA85 у меня в программе отображается как малиновый в инсталере он салатовый. Я правильно понимаю это код цвета в HEX с альфа каналом? Может нужна специальная программа для изменения цвета. В общем думаешь что будет цвет который видишь в программе, а получаешь в инстале совсем другой.

Код:
DiskUsedLB.FCreate(FMXForm.Handle, DiskUsageArc.GetLeft + DiskUsageArc.GetWidth + 20, DiskUsageArc.GetTop + 30, CustomMessage('DiskUsed'), '0.00 GB', 1, False);
  DiskUsedLB.Text1Setting('Segoe UI Bold', NS(13), $FF3DFA85, False);
  DiskUsedLB.Text1ShadowSetting($FF0885EB, 0.6, 0.5);
  DiskUsedLB.Text2Setting('Segoe UI semi light', NS(12), $FFF300E2, False);
  DiskUsedLB.Text2ShadowSetting($FF03EDAC, 0.6, 0.5);
 

tihiy_don

Старожил
@reklavaro,
Используйте функцию конвертации цвета из HTML - HTMLColorStrToFMXColor. Я так используя для удобства.
Пример:
code_language.pascal:
Page1Lbl[2].FCreate(Page1.Handle);
Page1Lbl[2].Text('Текст);
Page1Lbl[2].TextSetting(False, txCenter, txLeading);
Page1Lbl[2].FontSetting('Segoe UI', VCLFontSizeToFMX2(12), HTMLColorStrToFMXColor('#a66e14'));
Page1Lbl[2].SetBounds(0, 130, Page1.GetWidth, 20);
FMXForm.AddMousedownControls(Page1Lbl[2].Handle);
 
Последнее редактирование:

reklavaro

Мимокрокодил
@tihiy_don,
Спасибо, но не понял как этим пользоваться. Я всего лишь 3 день разбираюсь с Inno Setup. В общем нашел программу которой пользуются "Color Picker" https://krinkels.org/threads/color-picker-hex-html-vcl-fmx.5050/. Но видимо что-то есть еще, цвет либо не отображается, либо становится темно синим, в общем только синие оттенки отображаются.
 

reklavaro

Мимокрокодил
@tihiy_don, архив скачал из этого сообщения https://krinkels.org/threads/fmxinno.5223/post-43936
в архиве есть скрипт 1_Original_Inno_Example-mod.iss, в коде есть строки отвечающие за цвет текста (как мне кажется)
Код:
  DiskUsedLB.FCreate(FMXForm.Handle, DiskUsageArc.GetLeft + DiskUsageArc.GetWidth + 20, DiskUsageArc.GetTop + 30, CustomMessage('DiskUsed'), '0.00 GB', 1, False);
  DiskUsedLB.Text1Setting('Segoe UI Bold', NS(13), $FF3DFA85, False);
  DiskUsedLB.Text1ShadowSetting($FF0885EB, 0.6, 0.5);
  DiskUsedLB.Text2Setting('Segoe UI semi light', NS(12), $FFF300E2, False);
  DiskUsedLB.Text2ShadowSetting($FF03EDAC, 0.6, 0.5);
И мне не понятно куда ваш код интегрировать или если не надо как его запустить, я пока не понимаю как работает ваш код.
 

tihiy_don

Старожил
@reklavaro, я же вам показывал пример, куда нужно вставлять.
Пример на основе вашего кода:
Код:
  DiskUsedLB.FCreate(FMXForm.Handle, DiskUsageArc.GetLeft + DiskUsageArc.GetWidth + 20, DiskUsageArc.GetTop + 30, CustomMessage('DiskUsed'), '0.00 GB', 1, False);
  DiskUsedLB.Text1Setting('Segoe UI Bold', NS(13), HTMLColorStrToFMXColor('#a66e14'), False);
  DiskUsedLB.Text1ShadowSetting(HTMLColorStrToFMXColor('#c2c0c0'), 0.6, 0.5);
  DiskUsedLB.Text2Setting('Segoe UI semi light', NS(12), HTMLColorStrToFMXColor('#a66e14'), False);
  DiskUsedLB.Text2ShadowSetting(HTMLColorStrToFMXColor('#c2c0c0'), 0.6, 0.5);
 

reklavaro

Мимокрокодил
@tihiy_don, спасибо вам за терпение. Но я тут пока экспериментировал то при очередной ошибке обратил внимание на файл FMXInnoHandle.iss и в нем все что нужно есть уже, то есть коды различных цветов.
 

tihiy_don

Старожил
@reklavaro,коды есть, да. Но для тонкой настройки цвета можно использовать мой способ.
 

audiofeel

Старожил
@tihiy_don,
Спасибо, но не понял как этим пользоваться. Я всего лишь 3 день разбираюсь с Inno Setup. В общем нашел программу которой пользуются "Color Picker" https://krinkels.org/threads/color-picker-hex-html-vcl-fmx.5050/. Но видимо что-то есть еще, цвет либо не отображается, либо становится темно синим, в общем только синие оттенки отображаются.
все правильно. только добавляйте FF
Форматирование (BB-код):
#32E32D = $FF32E32D  Page1Labe.Color($FF32E32D);
Снимок экрана 2024-01-11 022948.png
 
Последнее редактирование:

tihiy_don

Старожил
tihiy_don обновил(а) ресурс FMXInno новой записью:

2024-Jan-31

What's new:
1. Added FMXInno WebView2 custom class.
2. Updated HTML text (updated _HTML-Syntax.txt).
3. Updated ISArcExCleanUp.
4. Added a simple tool (Installer Template Generator).
5. Addressed known issues.
6. Quality fixes and improvements.
1. FMXInno WebView2:

1. Support for the latest Windows 10 and Windows 11 only.

-- This requires the WebView2 Runtime package.
-- Alternatively, download it manually...
Узнать больше об этом обновлении...
 

tihiy_don

Старожил
Может кому пригодится.
Автоматически расставлять параметры распаковки в зависимости от количества оперативной памяти:
code_language.pascal:
[Code]
#include "Modules\FMXInnoHandle.iss"

var
  RamInfo      : FRamUsage;

procedure FMXInnoInit;
begin
  RamInfo      := InitRamUsage;
end;

function GetRamMemory: Integer;                      
var i: Integer;
    s: String;                                            
begin                                                        
  s:=MbOrTb(RamInfo.TotalRam, 0);
  for i:=length(s) downto 1 do
    if not (s[i] in ['0','1','2','3','4','5','6','7','8','9']) then delete(s,i,1);
   
  Result:=StrToInt(s);                                  
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  XValue, LRamValue, LCpuValue, SValue: String;
begin
  case GetRamMemory of
  0..2:
    begin
      XValue:= 't4';
      SValue:= '512mb';
      LRamValue:= '512mb';
      LCpuValue:= '4';
    end;
  3..4:
    begin
      XValue:= 't4';
      SValue:= '768mb';
      LRamValue:= '768mb';
      LCpuValue:= '4';
    end;
  5..6:
    begin
      XValue:= 't45p';
      SValue:= '1024mb';
      LRamValue:= '1024mb';
      LCpuValue:= '4';
    end;
  7..8:
    begin
      XValue:= 't65p';
      SValue:= '1536mb';
      LRamValue:= '1536mb';
      LCpuValue:= '4';
    end;
  9..12:
    begin
      XValue:= 't75p';
      SValue:= '2064mb';
      LRamValue:= '2064mb';
      LCpuValue:= '4';
    end;
  13..16:
    begin
      XValue:= 't85p';
      SValue:= '20%';
      LRamValue:= '50%';
      LCpuValue:= '6';
    end;
  17..32:
    begin
      XValue:= 't85p';
      SValue:= '40%';
      LRamValue:= '40%';
      LCpuValue:= '6';
    end;
  33..150:
    begin
      XValue:= 't85p';
      SValue:= '40%';
      LRamValue:= '40%';
      LCpuValue:= '6';
    end;
  end;

  if CurStep = ssInstall then
  begin
    ISArcExCancel:= 0;
    ISArcExDiskCount:= 0;
    ISArcDiskAddingSuccess:= False;
    ISArcExError:= True;
   
    ExtractTemporaryFile('Russian.ini');
    ExtractTemporaryFile('unarc.dll');
    ExtractTemporaryFile('arc.ini');
    ExtractTemporaryFile('cls.ini');
    ExtractTemporaryFile('Facompress.dll');

    #ifdef xtool_zlib
      ExtractTemporaryFile('zlibwapi.dll');
      ExtractTemporaryFile('xtool.exe');
      if IsWin64 then
      begin
        SetIniString('External compressor:xtool', 'unpackcmd', ' "xtool" d:precomp:' + XValue + ' - - <stdin> <stdout>', ExpandConstant('{tmp}\arc.ini'));
      end else
      begin
        SetIniString('External compressor:xtool', 'unpackcmd', ' "xtool" d:precomp:' + XValue + ' - - <stdin> <stdout>', ExpandConstant('{tmp}\arc.ini'));
      end;
    #endif

    #ifdef srep
      ExtractTemporaryFile('cls-srep.dll');
      if IsWin64 then
      begin
        ExtractTemporaryFile('cls-srep_x64.exe');
        SetIniString('Srep', 'Memory', SValue, ExpandConstant('{tmp}\cls.ini'));
      end else
      begin
        ExtractTemporaryFile('cls-srep_x86.exe');    
        SetIniString('Srep', 'Memory', SValue, ExpandConstant('{tmp}\cls.ini'));
      end;
    #endif

    #ifdef lolz
      ExtractTemporaryFile('cls-lolz.dll');
      if IsWin64 then
      begin
        ExtractTemporaryFile('cls-lolz_x64.exe');
        SetIniString('lolz', 'MaxThreadsUsage', '4', ExpandConstant('{tmp}\cls.ini'));
        SetIniString('lolz', 'MaxMemoryUsage', LRamValue, ExpandConstant('{tmp}\cls.ini'));
      end else
      begin
        ExtractTemporaryFile('cls-lolz_x86.exe');    
        SetIniString('lolz', 'MaxThreadsUsage', '4', ExpandConstant('{tmp}\cls.ini'));
        SetIniString('lolz', 'MaxMemoryUsage', LRamValue, ExpandConstant('{tmp}\cls.ini'));
      end;
    #endif
....
 
Последнее редактирование:

audiofeel

Старожил
Может кому пригодится.
Автоматически расставлять параметры распаковки в зависимости от количества оперативной памяти:
code_language.pascal:
[Code]
#include "Modules\FMXInnoHandle.iss"

var
  RamInfo      : FRamUsage;

procedure FMXInnoInit;
begin
  RamInfo      := InitRamUsage;
end;

function GetRamMemory: Integer;                     
var i: Integer;
    s: String;                                           
begin                                                       
  s:=MbOrTb(RamInfo.TotalRam, 0);
  for i:=length(s) downto 1 do
    if not (s[i] in ['0','1','2','3','4','5','6','7','8','9']) then delete(s,i,1);
  
  Result:=StrToInt(s);                                 
end;

procedure CurStepChanged(CurStep: TSetupStep);
var
  XValue, LRamValue, LCpuValue, SValue: String;
begin
  case GetRamMemory of
  0..2:
    begin
      XValue:= 't4';
      SValue:= '512mb';
      LRamValue:= '512mb';
      LCpuValue:= '4';
    end;
  3..4:
    begin
      XValue:= 't4';
      SValue:= '768mb';
      LRamValue:= '768mb';
      LCpuValue:= '4';
    end;
  5..6:
    begin
      XValue:= 't45p';
      SValue:= '1024mb';
      LRamValue:= '1024mb';
      LCpuValue:= '4';
    end;
  7..8:
    begin
      XValue:= 't65p';
      SValue:= '1536mb';
      LRamValue:= '1536mb';
      LCpuValue:= '4';
    end;
  9..12:
    begin
      XValue:= 't75p';
      SValue:= '2064mb';
      LRamValue:= '2064mb';
      LCpuValue:= '4';
    end;
  13..16:
    begin
      XValue:= 't85p';
      SValue:= '20%';
      LRamValue:= '50%';
      LCpuValue:= '6';
    end;
  17..32:
    begin
      XValue:= 't85p';
      SValue:= '40%';
      LRamValue:= '40%';
      LCpuValue:= '6';
    end;
  33..150:
    begin
      XValue:= 't85p';
      SValue:= '40%';
      LRamValue:= '40%';
      LCpuValue:= '6';
    end;
  end;

  if CurStep = ssInstall then
  begin
    ISArcExCancel:= 0;
    ISArcExDiskCount:= 0;
    ISArcDiskAddingSuccess:= False;
    ISArcExError:= True;
  
    ExtractTemporaryFile('Russian.ini');
    ExtractTemporaryFile('unarc.dll');
    ExtractTemporaryFile('arc.ini');
    ExtractTemporaryFile('cls.ini');
    ExtractTemporaryFile('Facompress.dll');

    #ifdef xtool_zlib
      ExtractTemporaryFile('zlibwapi.dll');
      ExtractTemporaryFile('xtool.exe');
      if IsWin64 then
      begin
        SetIniString('External compressor:xtool', 'unpackcmd', ' "xtool" d:precomp:' + XValue + ' - - <stdin> <stdout>', ExpandConstant('{tmp}\arc.ini'));
      end else
      begin
        SetIniString('External compressor:xtool', 'unpackcmd', ' "xtool" d:precomp:' + XValue + ' - - <stdin> <stdout>', ExpandConstant('{tmp}\arc.ini'));
      end;
    #endif

    #ifdef srep
      ExtractTemporaryFile('cls-srep.dll');
      if IsWin64 then
      begin
        ExtractTemporaryFile('cls-srep_x64.exe');
        SetIniString('Srep', 'Memory', SValue, ExpandConstant('{tmp}\cls.ini'));
      end else
      begin
        ExtractTemporaryFile('cls-srep_x86.exe');   
        SetIniString('Srep', 'Memory', SValue, ExpandConstant('{tmp}\cls.ini'));
      end;
    #endif

    #ifdef lolz
      ExtractTemporaryFile('cls-lolz.dll');
      if IsWin64 then
      begin
        ExtractTemporaryFile('cls-lolz_x64.exe');
        SetIniString('lolz', 'MaxThreadsUsage', '4', ExpandConstant('{tmp}\cls.ini'));
        SetIniString('lolz', 'MaxMemoryUsage', LRamValue, ExpandConstant('{tmp}\cls.ini'));
      end else
      begin
        ExtractTemporaryFile('cls-lolz_x86.exe');   
        SetIniString('lolz', 'MaxThreadsUsage', '4', ExpandConstant('{tmp}\cls.ini'));
        SetIniString('lolz', 'MaxMemoryUsage', LRamValue, ExpandConstant('{tmp}\cls.ini'));
      end;
    #endif
....
давно пора!
 

tihiy_don

Старожил
tihiy_don обновил(а) ресурс FMXInno новой записью:

2024-Feb-24

1. Integrated all updates up to this point.
2. Removed FMXInno's memory (RAM) truncation.
3. Fixed issues with invalid handles and owners.
4. Resolved some memory leaks.
5. Addressed previously encountered issues.
6. Implemented various improvements.
7. Updated all examples to Inno Setup 6.2.2.
8. Compiled with RadStudio 12 Athens + Patch 01.
9. This build is free from false positive trojans.
Узнать больше об этом обновлении...
 

Salamandra

Новичок
Здравствуйте. Классная штука. А можно пример как вывести сплешь а то я просто сделал он одновременно появляется с окном. можно как то показать как сделать что бы с начало появился сплеш картинка а через например 10 секунд появилось окно с главной страницей. Помогите пожалуйста кто нибудь с данным вопросом
 

tihiy_don

Старожил
@Salamandra, В примере Example_Splash.iss всё работает как нужно. Однако, чтобы убрать звук, используйте следующий код:
code_language.pascal:
SplashScreen.FCreate(WizardForm.Handle, ExtractAndLoad('Splash.png'), '', 1500);
1500 - это время сплеш-заставки. Измените на своё, чтобы добиться нужного результата.
 

Salamandra

Новичок
@Salamandra, В примере Example_Splash.iss всё работает как нужно. Однако, чтобы убрать звук, используйте следующий код:
code_language.pascal:
SplashScreen.FCreate(WizardForm.Handle, ExtractAndLoad('Splash.png'), '', 1500);
1500 - это время сплеш-заставки. Измените на своё, чтобы добиться нужного результата.
Да все классно. Спасибо. Только один нюанс сплеш то не по центру экрана а чуть ниже всплывает. Что сделать нужно что бы картинку выше поднять что бы по центру ровно экрана отображалась а не ближе к низу экрана????
 

Salamandra

Новичок
@Salamandra, какой у вас масштаб установлен в системе?
100% как и должно. в другом ингаляторе на 5,1 китайском я собираю обычно в се норм а тут как будто ниже. А я не хочу уже в прошлый век кунаться, меня эта тема зацепила хочу изучить по возможности опыта набраться следую советам помогающим и прочее. очень нравится это все новое и данный функционал. я прям увидел нечто совершенно новое. Вот хочу научится . разобраться и сделать свой установщик . по сути я так то суть понял. только пока не знаю как страницу новую создать и на нее наложить например компоненты с чекбоксами и радиобутонами и к ним првиязать картинку что бы рядом в окне показывалась при наведении на то или иное название чекбокса или радиобутона ну и что бы под картинокй тож окно было с описанием.
 
Сверху