IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Fermeture de Form en appuyant sur Echap


Sujet :

C++Builder

  1. #1
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut Fermeture de Form en appuyant sur Echap
    Bonjour!

    J'ai un petit problème.
    J'ai fait un petit code pour que mes forms puissent se fermer à l'appui de la touche Echap, en ayant bien mis la propriété KeyPreview de ma form à true:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    void __fastcall MaForm::FormKeyPress(TObject *Sender, char &Key)
    {
    	if (Key == VK_ESCAPE)
    	{
    	ModalResult = mrCancel;
                  	Close();
     
    	}
    }
    ça marche bien, mais le problème c'est que lorsque l'on appuie sur echap dans une liste déroulante qui est déroulée, la form se ferme.

    Ma question est-donc, comment éviter cela?

    J'ai essayé de tester la classe du paramètre Sender en ajoutant ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (!Sender->ClassNameIs("TLMDComboBox") && !Sender->ClassNameIs("TComboBox"))
    Mais ça ne marche pas, cette méthode ne doit pas convenir...

    Merci d'avance!

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Moi, j'utilise cela
    void __fastcall TCouleurBati::FormShortCut(TWMKey &Msg, bool &Handled)
    {
    if (Msg.CharCode == VK_ESCAPE)
    {
    Handled=true;
    Close();
    }
    }

    Ce n'est pas une fenêtre modale, d'où pas de ModalResult.
    C'est le paramètre Handled qui donne la priorité.
    Si j'ai une combox ouverte, à la frappe de Escape, elle se ferme, à la frappe suivante c'est la fenêtre qui se ferme.

    Complément, sauf erreur, si ModalResult est non nul, Close() est exécuté de toute façon, par contre il ne faut oublier delete, du la fenêtre a été créée avec un new.
    Dernière modification par Invité ; 26/05/2010 à 13h12.

  3. #3
    Membre confirmé Avatar de getz85
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2008
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2008
    Messages : 423
    Points : 462
    Points
    462
    Par défaut
    En effet votre méthode a l'air beaucoup plus adapté au comportement que je recherche, merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 15
    Dernier message: 28/01/2005, 04h46
  2. Comment Appuyer sur le bouton d'une page web...?
    Par Mayti4 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/01/2005, 14h07
  3. [forms] Bloc basé sur une clause from
    Par plaineR dans le forum Forms
    Réponses: 11
    Dernier message: 16/12/2004, 12h02
  4. [C#] [Win forms] Info bulle sur bouton
    Par RobinJulie dans le forum Windows Forms
    Réponses: 4
    Dernier message: 25/11/2004, 16h12
  5. [VB6] Déplacer la form sans cliquer sur la barre de titre
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 14/11/2002, 02h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo