Appeler FormClose sans TCloseAction

Résolu
zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016 - 29 févr. 2008 à 14:38
zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016 - 29 févr. 2008 à 16:45
Bonjour à tous,

J'ai déclaré une méthode classique appelée lors de la fermeture du programme:
procedure FormClose(Sender: TObject; var Action: TCloseAction);

Par ailleurs, un méhode déclenchée sur l'évènement OnKeyDown de ma TForm1 agit lorsque certaines touches sont pressées:
procedure InterceptKeyboard(Sender: TObject; var Key: Word; Shift: TShiftState);

Dans cette deuxième méthode, je souhaite quitter le programme lorsque la touche pressée est Echap. Mais je n'ai aucun argument de type TCloseAction pour appeler ma première méthode FormClose.

procedure TForm1.InterceptKeyboard(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_ESCAPE do
   FormClose(Sender, ?);
end;

J'ai essayé caFree, mais c'est une constante, il n'est pas de type variable.
Comment puis-je me tirer d'affaire ?

Bon week-end.

2 réponses

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
29 févr. 2008 à 15:12
Salut,

procedure TForm1.InterceptKeyboard(Sender: TObject; var Key: Word; Shift: TShiftState);
  begin
  if Key = VK_ESCAPE then form1.Close;
end;



procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
  begin
  InterceptKeyboard(sender, key, Shift);
end;



procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
  begin
  if MessageDlg('Fermer l''application?',mtConfirmation,[mbYes,mbNo],0)=mrYes then
  Action :=caFree
  else
  Action :=caNone;
end;
3
Rejoignez-nous