Dans mon application Delphi, j'ai un dialogue personnalisé Oui, Non, Annuler, qui sera appelé à partir du formulaire principal pour confirmer l'enregistrement des modifications apportées au fichier en cours édité. Cela devrait normalement être atteint par MessageDlg() mais je voulais que ce dialogue ont des regards sur mesure, donc je suis en train de réaliser cette fonctionnalité parModification du résultat modal par défaut d'un formulaire.showModal
case myDialogue.showModal of
mrYes: <<save changes>>;
mrNo: <<quit application without saving changes>>
mrCancel: <<set the closeAction to caNone and do nothing>>
end;
Le problème est que, par défaut, le formulaire réagit à appuyer sur l'Escape clé en renvoyant mrNoTModalResult
. Et vous pouvez voir comment cela est BAAAD, puisque votre intuition vous dit que Esc-aping le dialogue modal annulera le processus de demande de Quitter prévu, mais en fait ce qui se passe est Ne pas enregistrer les modifications quitte la commande et l'application se ferme .
Je n'ai pas remarqué ce comportement jusqu'à ce que j'ai perdu une heure de travail de cette façon. Aucun gestionnaire d'événement FormKeyPressed ou quoi que ce soit répondant aux touches n'a été inséré dans le code myModalDialogue. Cela fonctionne si bien qu'appuyer sur la touche Esc dans les formulaires affichés en utilisant showModal
renverra mrNo
. Comment puis-je remplacer ce comportement par défaut?
cela a fonctionné. Merci! –