Как видно из названия InitializeWizard()
, это функция инициализации , которая вызывается только один раз перед отображением мастера.Вы можете проверить это самостоятельно, установив точку останова в своем коде - она будет нажата только один раз, прямо в начале.
Поэтому это правильное место для добавления новой страницы мастера и установки значения по умолчанию для любого элемента управления., но невозможно реагировать на изменения на других страницах мастера.Что вам нужно сделать, это обновить путь к библиотеке прямо перед отображением вашей страницы.Правильный способ сделать это - функция NextButtonClick()
.Вот пример кода:
var
LibPage: TInputDirWizardPage;
procedure InitializeWizard();
begin
LibPage := CreateInputDirPage(wpSelectDir, 'Select Library Location',
'Where should the library files be stored?',
'To continue, click Next. If you would like to select a different folder, ' +
'click Browse.', False, 'Libs');
LibPage.Add('');
LibPage.Values[0] := WizardDirValue + '\libs';
end;
Это добавит вашу страницу сразу после страницы, которая запрашивает каталог {app}
.Так как пользователь может нажать кнопку «Предыдущая», чтобы несколько раз изменить каталог {app}
, вы всегда должны обновлять путь к библиотеке, когда ваша страница будет отображаться:
function NextButtonClick(CurPageID: Integer): Boolean;
begin
if CurPageID = wpSelectDir then
LibPage.Values[0] := WizardDirValue + '\libs';
end;
Для лучшего удобства использования вы также можетепроверьте, что каталог библиотеки является значением по умолчанию, иначе не изменяйте его значение.