Inno Setup custom page
I would like to create a custom wizard page after the page where you select the install location.
I have seen how to create custom pages and add them to the wizard in the InitializeWizard
procedure.
My problem is that when I create a custom page the default page for install location selection does not appear any more.
What options do I have to keep the default page(install location selection) and also add a my new custom page?
Thanks
My code looks something like this (CodeClasses.iss example provided by inno ):
procedure CreateTheWizardPages;
var
Page: TWizardPage;
Button, FormButton: TButton;
CheckBox: TCheckBox;
Edit: TEdit;
PasswordEdit: TPasswordEdit;
Memo: TMemo;
Lbl, ProgressBarLabel: TLabel;
ComboBox: TComboBox;
ListBox: TListBox;
StaticText: TNewStaticText;
ProgressBar: TNewProgressBar;
CheckListBox, CheckListBox2: TNewCheckListBox;
FolderTreeView: TFolderTreeView;
BitmapImage, BitmapImage2, BitmapImage3: TBitmapImage;
BitmapFileName: String;
RichEditViewer: TRichEditViewer;
begin
{ TButton and others }
Page := CreateCustomPage(wpWelcome, 'Custom wizard page controls', 'TButton and others');
Button := TButton.Create(Page);
Button.Width := ScaleX(75);
Button.Height := ScaleY(23);
Button.Caption := 'TButton';
Button.OnClick := @ButtonOnClick;
Button.Parent := Page.Surface;
CheckBox := TCheckBox.Create(Page);
CheckBox.Top := Button.Top + Button.Height + ScaleY(8);
CheckBox.Width := Page.SurfaceWidth;
CheckBox.Height := ScaleY(17);
CheckBox.Capt开发者_StackOverflowion := 'TCheckBox';
CheckBox.Checked := True;
CheckBox.Parent := Page.Surface;
Edit := TEdit.Create(Page);
Edit.Top := CheckBox.Top + CheckBox.Height + ScaleY(8);
Edit.Width := Page.SurfaceWidth div 2 - ScaleX(8);
Edit.Text := 'TEdit';
Edit.Parent := Page.Surface;
PasswordEdit := TPasswordEdit.Create(Page);
PasswordEdit.Left := Page.SurfaceWidth - Edit.Width;
PasswordEdit.Top := CheckBox.Top + CheckBox.Height + ScaleY(8);
PasswordEdit.Width := Edit.Width;
PasswordEdit.Text := 'TPasswordEdit';
PasswordEdit.Parent := Page.Surface;
Memo := TMemo.Create(Page);
Memo.Top := Edit.Top + Edit.Height + ScaleY(8);
Memo.Width := Page.SurfaceWidth;
Memo.Height := ScaleY(89);
Memo.ScrollBars := ssVertical;
Memo.Text := 'TMemo';
Memo.Parent := Page.Surface;
Lbl := TLabel.Create(Page);
Lbl.Top := Memo.Top + Memo.Height + ScaleY(8);
Lbl.Caption := 'TLabel';
Lbl.AutoSize := True;
Lbl.Parent := Page.Surface;
FormButton := TButton.Create(Page);
FormButton.Top := Lbl.Top + Lbl.Height + ScaleY(8);
FormButton.Width := ScaleX(75);
FormButton.Height := ScaleY(23);
FormButton.Caption := 'TSetupForm';
FormButton.OnClick := @FormButtonOnClick;
FormButton.Parent := Page.Surface;
......
procedure InitializeWizard();
var
AboutButton, CancelButton: TButton;
URLLabel: TNewStaticText;
BackgroundBitmapImage: TBitmapImage;
BackgroundBitmapText: TNewStaticText;
begin
{ Custom wizard pages }
CreateTheWizardPages;
{ Other custom controls }
CancelButton := WizardForm.CancelButton;
AboutButton := TButton.Create(WizardForm);
AboutButton.Left := WizardForm.ClientWidth - CancelButton.Left - CancelButton.Width;
AboutButton.Top := CancelButton.Top;
AboutButton.Width := CancelButton.Width;
AboutButton.Height := CancelButton.Height;
AboutButton.Caption := '&About...';
AboutButton.OnClick := @AboutButtonOnClick;
AboutButton.Parent := WizardForm;
URLLabel := TNewStaticText.Create(WizardForm);
URLLabel.Caption := 'www.innosetup.com';
URLLabel.Cursor := crHand;
URLLabel.OnClick := @URLLabelOnClick;
URLLabel.Parent := WizardForm;
{ Alter Font *after* setting Parent so the correct defaults are inherited first }
URLLabel.Font.Style := URLLabel.Font.Style + [fsUnderline];
URLLabel.Font.Color := clBlue;
URLLabel.Top := AboutButton.Top + AboutButton.Height - URLLabel.Height - 2;
URLLabel.Left := AboutButton.Left + AboutButton.Width + ScaleX(20);
BackgroundBitmapImage := TBitmapImage.Create(MainForm);
BackgroundBitmapImage.Left := 50;
BackgroundBitmapImage.Top := 90;
BackgroundBitmapImage.AutoSize := True;
BackgroundBitmapImage.Bitmap := WizardForm.WizardBitmapImage.Bitmap;
BackgroundBitmapImage.Parent := MainForm;
BackgroundBitmapText := TNewStaticText.Create(MainForm);
BackgroundBitmapText.Left := BackgroundBitmapImage.Left;
BackgroundBitmapText.Top := BackgroundBitmapImage.Top + BackgroundBitmapImage.Height + ScaleY(8);
BackgroundBitmapText.Caption := 'TBitmapImage';
BackgroundBitmapText.Parent := MainForm;
end;
The first parameter wpWelcome
in this case, specifies after witch page our custom page is displayed.
Page := CreateCustomPage(wpWelcome, 'Custom wizard page controls', 'TButton and others');
精彩评论