我正在使用自定义TInputDirWizardPage
输入三个不同的目标文件夹进行安装。
更改第一个文件夹后,我想自动更改第三个文件夹的路径。是否可以创建在第一个文件夹中使用“浏览”按钮并选择特定文件夹时发生的事件?如果是这样,是否还可以通过编程方式更改第3个文件夹的路径?
答案 0 :(得分:2)
您可以覆盖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;
代码需要Unicode版本的Inno Setup。在Ansi版本中奇怪地调用DirPage.Buttons[0].OnClick
无效。