Inno-setup: настраиваемая страница мастера на основе существующего типа страницы

Я решил создать настраиваемую страницу мастера в моем инсталляторе на основе inno-setup. Но я не хочу создавать его с нуля. Я хочу взять TInputDirWizardPage и изменить его, например добавить поле со списком. Является ли это возможным? Как это сделать?


person Aleksandr Kravets    schedule 18.01.2012    source источник


Ответы (1)


Я сам разобрался. Так что я отвечу на свой вопрос. Вот пример кода:

[Code]
const DB_PAGE_CAPTION='Select Application Database Folder';
  DB_PAGE_DESCRIPTION='Where should application database files be installed or where     your database files already are?';
  DB_PAGE_SUBCAPTION='In case of new installation select the folder in which Setup should install application database files, then click Next. Or select folder where previous version of application stored database files, then click Next';

var databasePage : TInputDirWizardPage;//this is predefined form declaration
    CheckListBox : TNewCheckListBox;  //this is new element i'm about to add to page

procedure createDatabaseWizardPage; //creating page
begin
databasePage :=CreateInputDirPage(wpSelectDir,
DB_PAGE_CAPTION,
DB_PAGE_DESCRIPTION,
DB_PAGE_SUBCAPTION,
False, '');
databasePage.Add('');

databasePage.buttons[0].Top:=databasePage.buttons[0].Top+ScaleY(70);//moving predefined 
databasePage.edits[0].Top:=databasePage.edits[0].Top+ScaleY(70);    //elements down.
databasePage.edits[0].Text:=ExpandConstant('{commonappdata}\my app');//default value

CheckListBox := TNewCheckListBox.Create(databasePage);//creating and modifying new checklistbox
CheckListBox.Top := 40 + ScaleY(8);
CheckListBox.Width := databasePage.SurfaceWidth;
CheckListBox.Height := ScaleY(50);
CheckListBox.BorderStyle := bsNone;
CheckListBox.ParentColor := True;
CheckListBox.MinItemHeight := WizardForm.TasksList.MinItemHeight;
CheckListBox.ShowLines := False;
CheckListBox.WantTabs := True;
CheckListBox.Parent := databasePage.Surface;//setting control's parent element
CheckListBox.AddRadioButton('New Installation', '', 0, True, True, nil);
CheckListBox.AddRadioButton('Update existing copy', '', 0, False, True, nil);
end;


procedure InitializeWizard;
begin
createDatabaseWizardPage(); 
end;

Спасибо всем! :-)

person Aleksandr Kravets    schedule 19.01.2012
comment
Спасибо, что поделились своим решением, очень полезно! - person reiniero; 12.08.2012