Fermeture d'uen fiche

Résolu/Fermé
jaakan Messages postés 19 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 25 avril 2019 - 8 févr. 2017 à 10:00
jaakan Messages postés 19 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 25 avril 2019 - 8 févr. 2017 à 11:46
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.
A voir également:

1 réponse

Nessdarth Messages postés 36 Date d'inscription vendredi 16 décembre 2016 Statut Membre Dernière intervention 28 février 2017 3
8 févr. 2017 à 11:10
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.
0
jaakan Messages postés 19 Date d'inscription mardi 19 mai 2015 Statut Membre Dernière intervention 25 avril 2019
8 févr. 2017 à 11:46
Grand merci.
0