2012-01-18 2 views
6

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

ответ

6

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

[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; 

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

+0

Спасибо, что поделились своим решением, очень полезно! – reiniero