Une fonction utilisant le résultat d'un événement, appelée hors de l'événement
Bonjour,
je veux définir une fonction utilisant le résultat d'un événement mais appelée hors de cet événement. Un exemple :
Code:
1 2 3 4
| function Foo : integer;
begin
Result := F() // une fonction des coordonnées d'un clique sur un TImage
end; |
Code:
1 2 3 4 5 6 7 8 9 10
| // utilise la fonction dans un événement quelconque
procedure TfmMain.UnBoutonOnClick (Sender: TObject);
begin
... plein de choses
// on attend le clique souris et on peut tester le résultat quand il a eu lieu
if Foo > 100
then quelque chose
else autre chose;
... plein de choses
end; |
Voila l'implémentation que j'utilise :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| var
GlobalAttente : boolean;
GlobalResult : integer;
function Foo : integer;
begin
GlobalAttente := True;
while GlobalAttente do
begin
Sleep(10);
Application.ProcessMessages
end;
Result := GlobalResult
end;
procedure TfmMain.MonImageOnMouseDown (Sender: TObject; X, Y : integer);
begin
GlobalAttente := False;
GlobalResult := un traitement quelconque utilisant X et Y
end; |
Ma question est la suivante : est-ce que c'est de la programmation shadock ou est-ce que c'est légitime ? Est-ce qu'il y a d'autres façons de faire ?
Merci de toutes vos remarques.