Inno Setup: Capturer les événements de contrôle dans la page de l'assistant
-
02-07-2019 - |
Question
Dans une page de l'assistant définie par l'utilisateur, existe-t-il un moyen de capturer les événements de changement ou de focus des contrôles? Je souhaite fournir un retour immédiat sur la saisie de l'utilisateur dans certaines listes déroulantes (par exemple, une boîte de message)
La solution
Il m'a fallu un peu de temps pour résoudre le problème, mais après avoir été dirigé dans la bonne direction par Otherside, je l'ai enfin compris (fonctionne pour la version 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;
Autres conseils
Etant donné que les scripts dans innosetup sont basés sur Delphi, les contrôles doivent comporter des événements tels que OnEnter
(= le contrôle a le focus) et OnExit
(= le contrôle a perdu le focus) . Vous pouvez affecter des procédures à ces événements, quelque chose comme ceci:
ComboBox.OnExit: = ComboBoxExit;
procedure ComboBoxExit(Sender: TObject);
begin
end;
Je n'ai pas accès à Innosetup pour le moment. Vous devrez donc rechercher les événements et les paramètres disponibles pour les procédures.