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
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
A voir également:
- Fermeture d'uen fiche
- Fiche de pointage - Télécharger - Tableur
- Sytadin fermeture - Télécharger - Transports & Cartes
- Forcer la fermeture d'un programme - Guide
- Annuler fermeture onglet chrome - Guide
- Polarité fiche din 2 broches ✓ - Forum Audio
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
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
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.
8 févr. 2017 à 11:46