我使用自定义TInputDirWizardPage
为我的安装输入三个不同的目标文件夹。
当第一个文件夹被更改时,我想自动更改第三个文件夹的路径。是否可以创建在第一个文件夹使用"浏览"按钮并选择特定文件夹时发生的事件?如果是,是否也可以通过编程更改第三个文件夹的路径?
您可以覆盖TInputDirWizardPage.Buttons[0].OnClick
事件处理程序:
var
DirPage: TInputDirWizardPage;
PrevFirstButtonClick: TNotifyEvent;
procedure FirstButtonClick(Sender: TObject);
var
PrevValue: string;
begin
PrevValue := DirPage.Values[0];
{ Call remembered handler }
PrevFirstButtonClick(Sender);
if DirPage.Values[0] <> PrevValue then
begin
{ And do whatever you want to do when the value changes }
MsgBox(Format('Value changed from "%s" to "%s".', [PrevValue, DirPage.Values[0]]),
mbInformation, MB_OK);
end;
end;
procedure InitializeWizard();
begin
DirPage := CreateInputDirPage(
wpSelectDir, SetupMessage(msgWizardSelectDir), '', '', False, '');
{ add directory input page items }
DirPage.Add('Path to Apache:');
DirPage.Add('Path to PHP:');
DirPage.Add('Path to Server Files:');
{ Remember the standard handler }
PrevFirstButtonClick := DirPage.Buttons[0].OnClick;
{ And assign our override }
DirPage.Buttons[0].OnClick := @FirstButtonClick;
end;
该代码需要Inno Setup的Unicode版本。奇怪的是,调用DirPage.Buttons[0].OnClick
在Ansi版本中不起作用。