Fermeture d'uen fiche [Résolu/Fermé]

Signaler
Messages postés
19
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
25 avril 2019
-
Messages postés
19
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
25 avril 2019
-
bonjour cher ami développeur.Je suis reconnaissant pour tout ce que vous faites pour cette communauté.Je développe une application avec delphi et je voudrais empêcher la fermeture d'une fiche par racourci clavier alt + F4.

1 réponse

Messages postés
36
Date d'inscription
vendredi 16 décembre 2016
Statut
Membre
Dernière intervention
28 février 2017
4
Bonjour,

Pour commencer tu dois mettre la propriété "Keypreview" de ta fiche, accessible depuis l'inspecteur d'objet, à True.

Pour la fiche, on va lui donner l'attribut FDoClose qu'on peut initialiser à True au FormCreate

TForm1 = class(TForm)
...
  private
    FDoClose: Boolean;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
  FDoClose := True;
...
end;

Ensuite tu dois implémenter l'événement FormKeyDown

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if (ssAlt in Shift) then
    FDoClose := not (GetAsyncKeyState(VK_F4) < 0);
end;

Dans le code, ci-dessus, je ne m'intéresse à la touche uniquement si la touche ALT est enfoncée, ensuite j'utilise la fonction GetAsyncKeyState, qui me permet de savoir si une touche en particulier est appuyée, quand c'est le cas, la fonction retourne une valeur négative. Avec ce code je sais que la combinaison ALT + F4 a été faite et mon attribut FDoClose est à faux

A présent je m'occupe de FormCloseQuery qui me permet de dire si on doit fermer la fiche ou pas:

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose := FDoClose;
  FDoClose := True;
end;

Comme FDoClose est à faux car il y a eu la combinaison ALT_F4, la fiche ne se fermera pas, il est important de repasser de suite FDoClose à True, sinon on ne pourra pas fermer la fiche en appuyant sur la croix de celle-ci ou via une fonction.
Messages postés
19
Date d'inscription
mardi 19 mai 2015
Statut
Membre
Dernière intervention
25 avril 2019

Grand merci.