在TInputDirWizardPage上浏览文件夹时生成的Inno Setup事件?

时间:2018-12-15 21:27:59

标签: inno-setup pascalscript

我正在使用自定义TInputDirWizardPage输入三个不同的目标文件夹进行安装。

更改第一个文件夹后,我想自动更改第三个文件夹的路径。是否可以创建在第一个文件夹中使用“浏览”按钮并选择特定文件夹时发生的事件?如果是这样,是否还可以通过编程方式更改第3个文件夹的路径?

1 个答案:

答案 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无效。