[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Types]
Name: full; Description: Полная установка; Flags: iscustom
Name: custom; Description: Выборочная установка;
[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 100000000
Name: text\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 200000000
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 500000000
Name: voice\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 600000000
Name: test; Description: тест, дубль задач;
[Tasks]
Name: VCCheck; Description: Установить Microsoft Visual C++ 2005 Redist
Name: PhysXCheck; Description: Установить Nvidia PhysX
Name: VCCheck1; Description: Установить Microsoft Visual C++ 2005 Redist дубль;Components: test
Name: PhysXCheck2; Description: Установить Nvidia PhysX дубль;Components: test
Код:
Procedure CurPageChanged(CurPageID: Integer);
Begin
WizardForm.ReadyMemo.Hide;
WizardForm.TasksList.BorderStyle := bsSingle;
if (WizardForm.ComponentsList.ItemCount*ScaleY(18)< ScaleX(120)) then begin
WizardForm.ComponentsList.Height := WizardForm.ComponentsList.ItemCount*ScaleY(18);
end else begin WizardForm.ComponentsList.Height := ScaleY(120); end;
if (WizardForm.TasksList.ItemCount*ScaleY(25)< ScaleX(120)) then begin
WizardForm.TasksList.Height := WizardForm.TasksList.ItemCount*ScaleY(25);
end else begin WizardForm.TasksList.Height := ScaleY(120); end;
end;[/SPOILER]
Второй код:
[SPOILER][Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
[Types]
Name: full; Description: Полная установка; Flags: iscustom
Name: custom; Description: Выборочная установка;
[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 100000000
Name: text\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 200000000
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 500000000
Name: voice\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 600000000
Name: test; Description: тест, дубль задач;
[Tasks]
Name: VCCheck; Description: Установить Microsoft Visual C++ 2005 Redist
Name: PhysXCheck; Description: Установить Nvidia PhysX
Name: VCCheck1; Description: Установить Microsoft Visual C++ 2005 Redist дубль;Components: test
Name: PhysXCheck2; Description: Установить Nvidia PhysX дубль;Components: test
[Code]
var
Flag:boolean;
Source: TPersistent;
procedure NewClick(Sender: TObject);
begin
WizardForm.TasksList.Assign(Source);
If not Flag then begin
WizardForm.ComponentsList.Show;
WizardForm.TypesCombo.Show;
WizardForm.TasksList.Hide;
Flag:=True;
end else begin
WizardForm.ComponentsList.Hide;
WizardForm.TypesCombo.Hide;
WizardForm.TasksList.Show;
Flag:=False;
end;
end;
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if(PageID =wpWelcome)
or(PageID =wpLicense)
or(PageID =wpInfoBefore)
or(PageID =wpUserInfo)
or(PageID =wpSelectDir)
or(PageID =wpSelectComponents)
or(PageID =wpSelectProgramGroup)
or(PageID =wpSelectTasks)
then Result:= True;
end;
procedure InitializeWizard();
begin
WizardForm.TypesCombo.Parent := WizardForm.ReadyPage;
WizardForm.ComponentsList.Parent := WizardForm.ReadyPage;
WizardForm.TasksList.Parent := WizardForm.ReadyPage;
WizardForm.TasksList.Hide;
with TNewButton.Create(WizardForm) do begin
Parent := WizardForm.ReadyPage;
Left := ScaleX(0);
Top := ScaleY(200);
Width := ScaleX(75);
Height := ScaleY(25);
OnClick := @NewClick;
end;
Flag:=True;
end;
Procedure CurPageChanged(CurPageID: Integer);
Begin
WizardForm.ReadyMemo.Hide;
WizardForm.TasksList.BorderStyle := bsSingle;
if (WizardForm.ComponentsList.ItemCount*ScaleY(18)< ScaleX(120)) then begin
WizardForm.ComponentsList.Height := WizardForm.ComponentsList.ItemCount*ScaleY(18);
end else begin WizardForm.ComponentsList.Height := ScaleY(120); end;
if (WizardForm.TasksList.ItemCount*ScaleY(25)< ScaleX(120)) then begin
WizardForm.TasksList.Height := WizardForm.TasksList.ItemCount*ScaleY(25);
end else begin WizardForm.TasksList.Height := ScaleY(120); end;
end;[/SPOILER] Сначала компилим первый код, потом второй, чтоб понять смысл засады.
Судя по всему, содержимое таск-листа обновляется при переходе на страницу задач. Команды, которая это делает, я так и не нашел, перепробовал все команды для объекта TNewCheckListBox, потом для всех родственных, вплоть до TWinControl. В общем, я понял ,что нужно искать в другом направлении. Вопрос - можно-ли обновить содержимое WizardForm.TasksList не переходя со страницы на страницу?