Событие Inno Setup, которое генерируется при просмотре папки на TInputDirWizardPage? - PullRequest
0 голосов
/ 16 декабря 2018

Я использую пользовательский TInputDirWizardPage для ввода трех разных целевых папок для моей установки.

Когда первая папка изменяется, я хочу автоматически изменить путь к третьей папке.Можно ли создать событие, которое происходит, когда кнопка «Обзор» используется для первой папки и выбрана определенная папка?Если да, можно ли программно изменить путь к 3-й папке?

1 Ответ

0 голосов
/ 16 декабря 2018

Вы можете переопределить 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.Вызов DirPage.Buttons[0].OnClick странно не работает в версии Ansi.

...