Для получения поведения по умолчанию Просмотр кнопка на «Выбор места назначения» (запускается директивой AppendDefaultDirName
), для Просмотр кнопок на вашей пользовательской странице, установите эти параметры CreateInputDirPage
:
AAppendDir
до True
ANewFolderName
на "имя папки по умолчанию "
Проблема в том, что это влияет на все поля ввода / кнопки.Хотя вы хотите повлиять только на первое поле ввода / кнопку (или вы хотите различный ANewFolderName
для каждого поля / кнопки).
Чтобы изменить поведение только некоторых полей, вы должны переопределитьих функциональность с нуля.Хотя функциональность диалога просмотра не выставлена.Есть только BrowseForFolder
функция , которая немного отличается.
var
DirPage: TInputDirWizardPage;
procedure NormalBrowseClick(Sender: TObject);
var
Directory: string;
begin
Directory := DirPage.Values[TButton(Sender).Tag];
if BrowseForFolder(SetupMessage(msgWizardSelectDir), Directory, False) then
begin
DirPage.Values[TButton(Sender).Tag] := Directory;
end;
end;
procedure InitializeWizard();
begin
DirPage := CreateInputDirPage(
wpSelectDir, SetupMessage(msgWizardSelectDir), '', '', True, 'Apache');
{ add directory input page items }
DirPage.Add('Path to Apache:');
DirPage.Add('Path to PHP:');
DirPage.Add('Path to Server Files:');
DirPage.Buttons[1].Tag := 1;
DirPage.Buttons[1].OnClick := @NormalBrowseClick;
DirPage.Buttons[2].Tag := 2;
DirPage.Buttons[2].OnClick := @NormalBrowseClick;
{ assign default directories for the items from the previously stored data; if }
{ there are no data stored from the previous installation, use default folders }
{ of your choice }
DirPage.Values[0] := GetPreviousData('Directory1', 'C:\Apache');
DirPage.Values[1] := GetPreviousData('Directory2', 'C:\PHP');
DirPage.Values[2] := GetPreviousData('Directory3', 'C:\Apache\htdocs\Server Files');
end;
Чтобы получить точное поведение в том же диалоге «просмотра», вы можете взломать его, вызвавфункциональные возможности скрытой "Выберите место назначения" страницы или другой скрытой TInputDirWizardPage
с различными настройками AAppendDir
:
var
DirPage: TInputDirWizardPage;
HiddenPage: TInputDirWizardPage;
procedure AppendDirBrowseClick(Sender: TObject);
begin
HiddenPage.Values[0] := DirPage.Values[0];
HiddenPage.Buttons[0].OnClick(HiddenPage.Buttons[0]);
DirPage.Values[0] := HiddenPage.Values[0];
end;
function SkipPage(Sender: TWizardPage): Boolean;
begin
Result := True;
end;
procedure InitializeWizard();
begin
DirPage := CreateInputDirPage(
wpSelectDir, SetupMessage(msgWizardSelectDir), '', '', False, '');
DirPage.Add('Path to Apache:');
DirPage.Add('Path to PHP:');
DirPage.Add('Path to Server Files:');
{ assign default directories for the items from the previously stored data; if }
{ there are no data stored from the previous installation, use default folders }
{ of your choice }
DirPage.Values[0] := GetPreviousData('Directory1', 'C:\Apache');
DirPage.Values[1] := GetPreviousData('Directory2', 'C:\PHP');
DirPage.Values[2] := GetPreviousData('Directory3', 'C:\Apache\htdocs\Server Files');
DirPage.Buttons[0].OnClick := @AppendDirBrowseClick;
HiddenPage := CreateInputDirPage(
wpSelectDir, SetupMessage(msgWizardSelectDir), '', '', True, 'Apache');
HiddenPage.Add('');
HiddenPage.OnShouldSkipPage := @SkipPage;
end;
Код требует Unicode-версию Inno Setup.Вызов HiddenPage.Buttons[0].OnClick
странно не работает в версии Ansi.