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 :

gestion de la perte de focus dans un TEdit


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut gestion de la perte de focus dans un TEdit
    Bonjour à tous,

    J'ai une fenêtre dans laquelle il y a plusieurs TEdit et deux boutons : valider, annuler.

    Lorsque ma fenêtre s'ouvre Edit1 a le focus.
    L'utilisateur entre un code dans ce TEdit et j'ai un bout de programme qui doit s'exécuter dès que l'utilisateur appuie sur les touches TAB ou ENTREE.

    J'ai essayé avec KeyDown, KeyUp et KeyPress, mais je ne sais pas comment déterminer si c'est bien une de ces deux touches qu'il a entrées.
    Et avec OnExit, le code s'exécute même si l'utilisateur clique sur annuler par exemple !

    Si quelqu'un a une idée, ça m'aiderait beaucoup.
    Merci d'avance.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2003
    Messages : 186
    Par défaut
    As-tu essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if (Key = #9) OR (Key = #13) then ...
    end;
    Sur ta Form bien mettre la propriété Keypreview à True

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut
    Apparemment il ne rentre pas dans cet évènement, j'ai mis un point d'arrêt sur le IF et je n'y passe pas.

  4. #4
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mars 2003
    Messages
    422
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mars 2003
    Messages : 422
    Par défaut
    Bonjour,

    Pour ma part voici un bout de code que j'utilise pour utiliser la touche entrée

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure Taffiche.FormKeyPress(Sender: TObject; var Key: Char);
     
    begin
    if (Key=Char(VK_RETURN )) and (edit1.text<>'') then
    begin
    Key := #0;
    Je teste si mon edit à une valeur de saisie
    Si ça peut aider......

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut
    Je ne sais pas pourquoi mais dans tous les cas il ne rentre pas dans KeyPress.
    C'est peut-être parce que j'ai une version TurboDelphi gratuite...

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Billets dans le blog
    1
    Par défaut
    As-tu bien positionné sur ta fiche la propriété KeyPreview à True comme l'a indiqué Yamino ?

  7. #7
    Membre Expert
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 704
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 704
    Par défaut
    Citation Envoyé par yamino Voir le message
    As-tu essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if (Key = #9) OR (Key = #13) then ...
    end;
    Pour moi, cette solution doit fonctionner.

    Citation Envoyé par PtiteDéveloppeuse Voir le message
    Apparemment il ne rentre pas dans cet évènement, j'ai mis un point d'arrêt sur le IF et je n'y passe pas.
    C'est pas normal.
    Ton Edit utilise bien cet évènement ? Vérifie dans l'inspecteur d'objet.
    Ton Edit est actif (Enabled = True) ?
    Il n'est pas dans un Panel qui serait Enabled = False ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. :bug: ___ "http://club.developpez.com/regles/#LIII-A"Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.3 Entreprise - Visual studio 2022
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.7)

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 16
    Par défaut
    J'ai tout vérifié : le panel, le GroupBox et l'Edit et tout est à Enabled = True.
    La franchement, j'ai beau chercher, je ne trouve vraiment pas.

  9. #9
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    Salut,

    une form, 2 edits et 2 boutons

    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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        Button1: TButton;
        Button2: TButton;
        procedure Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
      private
        procedure CMFocusChanged(var Message: TCMFocusChanged); message CM_FOCUSCHANGED;
        procedure FaisLeTaff(Edt: TEdit);
      public
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.CMFocusChanged(var Message: TCMFocusChanged);
    var
      Ctrl: TControl;
    begin
      inherited;
      Ctrl :=  Message.Sender;
     
      if Ctrl is TEdit then
        FaisLeTaff(Ctrl as TEdit);
    end;
     
    procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      if Key = VK_RETURN then
        if Sender is TEdit then
          FaisLeTaff(Sender as TEdit);
    end;
     
    procedure TForm1.FaisLeTaff(Edt: TEdit);
    begin
      ShowMessage(Edt.Text);
    end;
     
    end.
    ...une piste à explorer

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

Discussions similaires

  1. Perte de focus dans un menu déroulant
    Par erehcab dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 17/02/2012, 22h01
  2. Réponses: 2
    Dernier message: 20/05/2011, 10h53
  3. Gestion du focus dans une hiérarchie de contrôles
    Par JolyLoic dans le forum Windows Presentation Foundation
    Réponses: 4
    Dernier message: 29/08/2009, 15h44
  4. Gestion du focus dans des textbox
    Par noremo2010 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 18/10/2007, 08h42
  5. Perte de focus - Onglets dans un formulaire
    Par kimaidou dans le forum Access
    Réponses: 5
    Dernier message: 04/08/2006, 10h19

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