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

Composants VCL Delphi Discussion :

Evénement ButtonClick avant exit d'un TEdit


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut Evénement ButtonClick avant exit d'un TEdit
    Bonjour,

    Dans une form, j'ai un composant tedit ou j'ai un événement onexit avec un traitement dessus.
    sur cette form j'ai tbitbtn avec un événement click(Close) qui ferme la form.
    seulement quand je suis sur le tedit et que je veux cliquer sur le tbitbtn, le on exit se déclenche a chaque fois.

    comment intercepter le onclick du tbitbtn avant le onexit du tedit pour fermer directement la form sans faire le traitement du onexit ?

    Merci pour vos réponses.

    PS: Je suis en DELPHI 6

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Si j'ai bien compris le problème, pour rester simple (mais pas à 100% opérationnel), en supposant qu'il y ait plusieurs TEdits, TMemos..., j'écrirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      Edit1.TabOrder   := 0;
      Edit2.TabOrder   := 1;
      BitBtn1.TabOrder := 2;
    end;
     
    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      if BitBtn1.Focused then
         Showmessage('Pas d''exécution du traitement de sortie de TEdit1')
      else
         Showmessage('Exécution du traitement de sortie de TEdit1')
    end;
     
    procedure TForm1.Edit2Exit(Sender: TObject);
    begin
       if BitBtn1.Focused then
         Showmessage('Pas d''exécution du traitement de sortie de TEdit2')
      else
         Showmessage('Exécution du traitement de sortie de TEdit2')
    end;
     
    procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      Close;
    end;
    De toute façon, en Lazarus/Delphi le Edit1Exit s'exécutera avant BitBtn1Click. Mais, l'action qui déclenchera le Edit1Exit est le OnClick ou le OnKeyxxx duTBitBtn... et dans tous les cas, ce dernier aura le focus avant d'engager le Edit1Exit. Il suffit de le détecter. C'est simple et remplit la plupart des contraintes... sauf si le BitBtn est sélectionné au clavier par Tab par exemple et que vous n'engagez pas le OnKey de celui-ci et continuez sur un hypothétique Edit3 (d'où l'ordre des TabOrder dans le OnCreate de la Form )

    Sinon on déclenche une méthode de contrôle des TEdits à partir de l'entrée dans les autres composants sauf le BitBtn... Mais ce sera plus lourd en écriture.

    Encore plus lourd, gérer les événements à partir de la Form directement et en overridant certaines méthodes (mais cela nécessitera son KeyPreview à True).
    Dernière modification par Invité ; 25/01/2015 à 16h15.

  3. #3
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 599
    Billets dans le blog
    65
    Par défaut
    Bonjour,

    Le problème est que le onExit se fait dès que le TEdit perd le focus (la souris sort de la zone).

    Ceci étant , comment sort-on du Tedit ?
    - Soit par la souris
    - Soit parce que la zone est pleine
    - Soit par Tabulation
    - Soit encore par la touche Enter (uniquement si l'évènement OnKeyPress est programmé)

    Donc si, on utilise l'évènement onKeyPress au lieu du OnExit les deux derniers (voire les trois) cas sont gérables.

    j'opérerai de la manière suivante :
    1-Gestion de l'event on key press
    si #9 ou #13 (tab ou Enter) alors Char=#0 et appel d'une procédure qui fait le traitement prévu au départ dans le onExit
    2-Pour l'event on Exit
    si longueur atteinte appel du traitement prévu (même procédure que dans 1)
    sinon simulation clic bouton ?

  4. #4
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2015
    Messages : 2
    Par défaut
    Bonjour,

    merci pour vos réponses, j'ai réglé le problème.

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 599
    Billets dans le blog
    65
    Par défaut
    Citation Envoyé par leaannanreugel Voir le message
    merci pour vos réponses, j'ai réglé le problème.
    Cela aurait été mieux d'indiquer comment ! pas pour la postérité mais pour les autres membres qui auraient le même problème

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

Discussions similaires

  1. Evénement ButtonClick avant exit d'un TEdit
    Par leaannanreugel dans le forum Delphi
    Réponses: 4
    Dernier message: 26/01/2015, 10h26
  2. Evènement ButtonClick introuvable
    Par ToniConti dans le forum Flex
    Réponses: 2
    Dernier message: 23/08/2010, 11h07
  3. Réponses: 7
    Dernier message: 05/11/2008, 10h23
  4. Evènement exit d'une text box
    Par claireP23 dans le forum Windows Forms
    Réponses: 8
    Dernier message: 28/06/2007, 11h21
  5. [Débutant - Excel] Evénement avant modification de cellule
    Par seiryujay dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 14/12/2006, 05h31

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