Berline, вы как-то спрашивали про выделение компонентов отдельными кнопками.
На тот момент, правильного решения я не нашёл, а оно было рядом...
Пример
Код:
; выделение или снятие отметки со всех компонентов одной кнопкой...
; Автор: Serega, http://forum.oszone.net/member.php?userid=88670
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
Compression=lzma/ultra
InternalCompressLevel=ultra
SolidCompression=yes
[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl
[Types]
Name: full; Description: Полная установка
Name: custom; Description: Выборочная установка; Flags: iscustom
[Components]
Name: a; Description: Моя программа™; Types: full custom
Name: a\a; Description: Руководство пользователя; Types: full
Name: a\a\a; Description: Русский; Flags: exclusive
Name: a\a\b; Description: English; Flags: exclusive
Name: a\b; Description: Справка; Types: full
[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: a
Source: compiler:Examples\Readme-ru.txt; DestDir: {app}; Components: a\a\a
Source: compiler:Examples\Readme-en.txt; DestDir: {app}; Components: a\a\b
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: a\b
[Code]
var
i, k, count: Integer;
procedure btnClick(Sender: TObject);
begin
count:= WizardForm.ComponentsList.Items.Count-1;
for i:= count downto 0 do
begin
case TButton(Sender).Tag of
0: WizardForm.ComponentsList.Checked[i]:= True;
1: WizardForm.ComponentsList.Checked[i]:= False;
end;
WizardForm.ComponentsList.OnClickCheck(WizardForm.ComponentsList.ItemObject[i]);
end;
end;
procedure InitializeWizard();
begin
for i:= 0 to 1 do
with TButton.Create(WizardForm) do
begin
SetBounds(295+k,210,60,25);
OnClick:= @btnClick;
Parent:= WizardForm.SelectComponentsPage;
Tag:= i;
case i of
0: Caption:= 'Все';
1: Caption:= 'Ничего';
end;
k:= 62;
end;
end;