Настройка Инно:Захват событий управления на странице мастера
-
02-07-2019 - |
Вопрос
Есть ли способ фиксировать события изменения или фокусировки элементов управления на пользовательской странице мастера?Я хочу предоставить немедленную обратную связь о вводе пользователем информации в некоторых раскрывающихся списках (например,ящик для сообщений)
Решение
Мне потребовалось некоторое время, чтобы разобраться с этим, но после того, как Otherside указал правильное направление, я наконец понял (работает для версии 5.2):
[Code]
var
MyCustomPage : TWizardPage;
procedure MyEditField_OnChange(Sender: TObject);
begin
MsgBox('TEST', mbError, MB_OK);
end;
function MyCustomPage_Create(PreviousPageId: Integer): Integer;
var
MyEditField: TEdit;
begin
MyCustomPage := CreateCustomPage(PreviousPageId, 'Caption', 'Description');
MyEditField := TEdit.Create(MyCustomPage);
MyEditField.OnChange := @MyEditField_OnChange;
end;
Другие советы
Поскольку сценарии в innosetup во многом основаны на Delphi, элементы управления должны иметь некоторые события, например OnEnter
(= элемент управления получил фокус) и OnExit
(= управление потеряло фокус).Вы можете назначить процедуры этим событиям, примерно так:ComboBox.OnExit := ComboBoxExit;
procedure ComboBoxExit(Sender: TObject);
begin
end;
Сейчас у меня нет доступа к Innosetup, поэтому вам нужно будет найти доступные события и параметры процедур.