Старожил
Сообщения: 440
Благодарности: 251
Профиль
|
Сайт
|
Отправить PM
| Цитировать
Chudmin ,
Три варианта
Первый: самый простой, но через секцию Components
Код:
[Setup]
AppName = MyApp
AppVerName = MyApp
DefaultDirname = {pf} \MyApp
OutputDir =.
[Types]
Name : full; Description : Full installation; Flags : iscustom ;
[Components]
Name : Check0; Description : "Стандартные иконки в стиле Win 7"; Flags : exclusive ; Types : full;
Name : Check1; Description : "Стандартные иконки в стиле Win 10"; Flags : exclusive ;
Name : Check2; Description : "Станадартные иконки в стиле Win 7 + Win 10"; Flags : exclusive ;
Name : Check3; Description : "Дополнительные иконки в стиле Win 7"; Flags : exclusive ;
[Files]
Source : "Win_7.txt"; DestDir : "{app} "; Components : Check0;
Source : "Win_10.txt"; DestDir : "{app} "; Components : Check1;
Source : "Win_10_2.txt"; DestDir : "{app} "; Components : Check2;
Source : "Dop_Win_7.txt"; DestDir : "{app} "; Components : Check3;
Второй: если все же нужны чекбосы, а не радиобаттоны
Код:
[Setup]
AppName = MyApp
AppVerName = MyApp
DefaultDirname = {pf} \MyApp
OutputDir =.
[Tasks]
Name : desktopicon; Description : "Create a &desktop icon";
[Files]
Source : "Win_7.txt"; DestDir : "{app} "; Check : Check_0;
Source : "Win_10.txt"; DestDir : "{app} "; Check : Check_1;
Source : "Win_10_2.txt"; DestDir : "{app} "; Check : Check_2;
Source : "Dop_Win_7.txt"; DestDir : "{app} "; Check :Check_3;
[ Code]
var
Check: array [ 0..3] of TCheckBox;
function Check_0(): Boolean;
begin
Result:= Check[ 0].Checked;
end ;
function Check_1(): Boolean;
begin
Result:= Check[ 1].Checked;
end ;
function Check_2(): Boolean;
begin
Result:= Check[ 2].Checked;
end ;
function Check_3(): Boolean;
begin
Result:= Check[ 3].Checked;
end ;
procedure Check0(Sender: TObject);
begin
if Check[ 0].Checked then begin
Check[ 1].Checked:= False;
Check[ 2].Checked:= False;
Check[ 3].Checked:= False;
end ;
if (Check[ 0].Checked = False) and (Check[ 1].Checked = False) and (Check[ 2].Checked = False) and (Check[ 3].Checked = False) then Check[ 0].Checked:= True;
end ;
procedure Check1(Sender: TObject);
begin
if Check[ 1].Checked then begin
Check[ 0].Checked:= False;
Check[ 2].Checked:= False;
Check[ 3].Checked:= False;
end ;
if (Check[ 0].Checked = False) and (Check[ 1].Checked = False) and (Check[ 2].Checked = False) and (Check[ 3].Checked = False) then Check[ 1].Checked := True;
end ;
procedure Check2(Sender: TObject);
begin
if Check[ 2].Checked then begin
Check[ 0].Checked:= False;
Check[ 1].Checked:= False;
Check[ 3].Checked:= False;
end ;
if (Check[ 0].Checked = False) and (Check[ 1].Checked = False) and (Check[ 2].Checked = False) and (Check[ 3].Checked = False) then Check[ 2].Checked:= True;
end ;
procedure Check3(Sender: TObject);
begin
if Check[ 3].Checked then begin
Check[ 0].Checked:= False;
Check[ 1].Checked:= False;
Check[ 2].Checked:= False;
end ;
if (Check[ 0].Checked = False) and (Check[ 1].Checked = False) and (Check[ 2].Checked = False) and (Check[ 3].Checked = False) then Check[ 3].Checked:= True;
end ;
procedure InitializeWizard ();
begin
Check[ 0]:= TCheckBox.Create(WizardForm);
with Check[ 0] do begin
Parent:= WizardForm.SelectTasksPage;
Checked:= True;
Left:=ScaleX(4);
Top:= ScaleY(90);
Width:=ScaleX(280);
OnClick:= @Check0;
// Будет Win_7.txt
Caption:= ' Стандартные иконки в стиле Win 7';
end ;
Check[ 1]:= TCheckBox.Create(WizardForm);
with Check[ 1] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(115);
Width:=ScaleX(280);
OnClick:= @Check1;
// Будет Win_10.txt
Caption:= ' Стандартные иконки в стиле Win 10';
end ;
Check[ 2]:= TCheckBox.Create(WizardForm);
with Check[ 2] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(140);
Width:=ScaleX(350);
OnClick:= @Check2;
// Будет Win_10_2.txt
Caption:= ' Станадартные иконки в стиле Win 7 + Win 10';
end ;
Check[ 3]:= TCheckBox.Create(WizardForm);
with Check[ 3] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(165);
Width:=ScaleX(280);
OnClick:= @Check3;
// Будет Dop_Win_7.txt
Caption:= ' Дополнительные иконки в стиле Win 7';
end ;
end ;
Третий: если все же нужны чекбосы, а не радиобаттоны, другая реализация
Код:
[Setup]
AppName = MyApp
AppVerName = MyApp
DefaultDirname = {pf} \MyApp
OutputDir =.
[Tasks]
Name : desktopicon; Description : "Create a &desktop icon";
[ Code]
var
Check: array [ 0..3] of TCheckBox;
procedure Check0(Sender: TObject);
begin
if Check[ 0].Checked then begin
Check[ 1].Checked:= False;
Check[ 2].Checked:= False;
Check[ 3].Checked:= False;
end ;
if (Check[ 0].Checked = False) and (Check[ 1].Checked = False) and (Check[ 2].Checked = False) and (Check[ 3].Checked = False) then Check[ 0].Checked:= True;
end ;
procedure Check1(Sender: TObject);
begin
if Check[ 1].Checked then begin
Check[ 0].Checked:= False;
Check[ 2].Checked:= False;
Check[ 3].Checked:= False;
end ;
if (Check[ 0].Checked = False) and (Check[ 1].Checked = False) and (Check[ 2].Checked = False) and (Check[ 3].Checked = False) then Check[ 1].Checked := True;
end ;
procedure Check2(Sender: TObject);
begin
if Check[ 2].Checked then begin
Check[ 0].Checked:= False;
Check[ 1].Checked:= False;
Check[ 3].Checked:= False;
end ;
if (Check[ 0].Checked = False) and (Check[ 1].Checked = False) and (Check[ 2].Checked = False) and (Check[ 3].Checked = False) then Check[ 2].Checked:= True;
end ;
procedure Check3(Sender: TObject);
begin
if Check[ 3].Checked then begin
Check[ 0].Checked:= False;
Check[ 1].Checked:= False;
Check[ 2].Checked:= False;
end ;
if (Check[ 0].Checked = False) and (Check[ 1].Checked = False) and (Check[ 2].Checked = False) and (Check[ 3].Checked = False) then Check[ 3].Checked:= True;
end ;
procedure InitializeWizard ();
begin
Check[ 0]:= TCheckBox.Create(WizardForm);
with Check[ 0] do begin
Parent:= WizardForm.SelectTasksPage;
Checked:= True;
Left:=ScaleX(4);
Top:= ScaleY(90);
Width:=ScaleX(280);
OnClick:= @Check0;
// Будет Win_7.txt
Caption:= ' Стандартные иконки в стиле Win 7';
end ;
Check[ 1]:= TCheckBox.Create(WizardForm);
with Check[ 1] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(115);
Width:=ScaleX(280);
OnClick:= @Check1;
// Будет Win_10.txt
Caption:= ' Стандартные иконки в стиле Win 10';
end ;
Check[ 2]:= TCheckBox.Create(WizardForm);
with Check[ 2] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(140);
Width:=ScaleX(350);
OnClick:= @Check2;
// Будет Win_10_2.txt
Caption:= ' Станадартные иконки в стиле Win 7 + Win 10';
end ;
Check[ 3]:= TCheckBox.Create(WizardForm);
with Check[ 3] do begin
Parent:= WizardForm.SelectTasksPage;
Left:=ScaleX(4);
Top:= ScaleY(165);
Width:=ScaleX(280);
OnClick:= @Check3;
// Будет Dop_Win_7.txt
Caption:= ' Дополнительные иконки в стиле Win 7';
end ;
end ;
procedure CurPageChanged (CurPageID: Integer);
begin
case CurPageID of
wpFinished: begin
if Check[ 0].Checked then FileCopy(ExpandConstant('{src}\Win_7.txt'), ExpandConstant('{app}\Win_7.txt'), false);
if Check[ 1].Checked then FileCopy(ExpandConstant('{src}\Win_10.txt'), ExpandConstant('{app}\Win_10.txt'), false);
if Check[ 2].Checked then FileCopy(ExpandConstant('{src}\Win_10_2.txt'), ExpandConstant('{app}\Win_10_2.txt'), false);
if Check[ 3].Checked then FileCopy(ExpandConstant('{src}\Dop_Win_7.txt'), ExpandConstant('{app}\Dop_Win_7.txt'), false);
end ;
end ;
end ;
-------
Если сообщение оказалось полезным для Вас, то помимо спасибо, можно нажать на "Полезное сообщение" .
Это сообщение посчитали полезным следующие участники:
Отправлено : 21:25, 19-11-2018
| #143