Старожил
Сообщения: 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
|