Fermeture d'uen fiche
Résolu
jaakan
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
-
jaakan Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
jaakan Messages postés 19 Date d'inscription Statut Membre Dernière intervention -
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:
- Fermeture d'uen fiche
- Fiche de pointage excel - Télécharger - Tableur
- Fiche pratique tableau croisé dynamique - Guide
- Sytadin fermeture - Télécharger - Transports & Cartes
- Forcer fermeture application windows - Guide
- Annuler fermeture onglet chrome - Guide
1 réponse
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
Ensuite tu dois implémenter l'événement FormKeyDown
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:
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.
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.
jaakan
Messages postés
19
Date d'inscription
Statut
Membre
Dernière intervention
Grand merci.