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 :

TEdit événement OnKeyDown


Sujet :

Composants VCL Delphi

  1. #1
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut TEdit événement OnKeyDown
    Bonjour,

    Sur une form dont le KeyPreview est à True, j'ai un Edit dans avec du code dans l’événement KeyDown qui s’exécute lorsque qu'il détecte que la touche Entrée est appuyée jusque là c'est bon. J'ai fait la même chose avec un deuxièmeEdit, le VK_RETURN n'est pas détecté dans le deuxième.
    Pourriez-vous svp m'éclairer ?
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 449
    Points : 24 856
    Points
    24 856
    Par défaut
    Le 2eme TEdit est branché sur le bon gestionnaire de KeyDown ?

    Je l'ai fait en D7 ou je convertissais le Enter en Tab plutôt dans le KeyPress
    Aucun soucis mais j'avais rarement KeyPreview à True

    En XE2, je l'ai fait récement, un Edit pour un Code, un autre pour une quantité, les deux ayant chacun un gestionnaire de KeyDown

    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
    //------------------------------------------------------------------------------
    function TFormSliteHelper.EnterAsTab(var Key: Char): Boolean;
    begin
      if Key = #13 then
      begin
        Result := True;
        if LongBool(GetAsyncKeyState(VK_SHIFT) and $8000) then
          SelectPriorControl()
        else
          SelectNextControl();
        Key := #0; // Evite le "dong" !
      end
      else
        Result := False;
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Bonjour

    Aurais-tu un projet de démo pour qu'on regarde le source directement et fasse joujou avec ?

  4. #4
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonsoir à tous,

    Désolé je n'avais pas internet.
    Je viens de m'en rendre compte que j'utilise le composant JvEnterAsTab1 de JVCL c'est lui qui court-circuite le 2eme edit mais je ne peux pas m'en passer car j'ai un autre tas d'EDIT organisés dans un onglet tandis que l'edit en question se trouve dans un panel

    Citation Envoyé par pprem
    Aurais-tu un projet de démo pour qu'on regarde le source directement et fasse joujou avec ?
    Voici le code de l'EDIT en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure TForm1.edStartKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
     
    If Key=VK_RETURN Then
    Begin
    If edStart.Text<>'' then
    cmdVoir.Click;
    end;
    end;
    Même avec le deboggage ca ne passe pas à la ligne If Key=VK_RETURN Then en fait y a aucun passage dans l'evenement.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur (aussi appelé "programmateur" ou "magicien")
    Inscrit en
    Octobre 2014
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur (aussi appelé "programmateur" ou "magicien")
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2014
    Messages : 101
    Points : 102
    Points
    102
    Par défaut
    Salut,

    Si je comprends bien ton dernier message, quand tu appuies sur une touche dans ton edit l'événement n'est même pas déclenché ?

    Et si tu essaies de connecter un autre événement sur ton composant (genre un showmessage sur l'événement onChange), ça fonctionne ?

    Sinon, si le problème vient du JvEnterAsTab1, tu peux essayer de t'en passer pour cet edit là, tu devrais trouver le nécessaire ici : https://delphi.developpez.com/faq/?p...-un-formulaire
    Delphi 7 et 10.3.2
    IBExpert et Firebird 2.5

    Fervent partisan de la méthode du canard en plastique .

  6. #6
    Membre expert
    Avatar de pprem
    Homme Profil pro
    MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Inscrit en
    Juin 2013
    Messages
    1 876
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : MVP Embarcadero - formateur&développeur Delphi, PHP et JS
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 876
    Points : 3 611
    Points
    3 611
    Par défaut
    Citation Envoyé par freud Voir le message
    Je viens de m'en rendre compte que j'utilise le composant JvEnterAsTab1 de JVCL c'est lui qui court-circuite le 2eme edit mais je ne peux pas m'en passer car j'ai un autre tas d'EDIT organisés dans un onglet tandis que l'edit en question se trouve dans un panel
    Ok, parce que juste 2 TEdit dans un TForm, avec ou sans TForm.KeyPreview à True, le onKeyDown des TEdit intercepte bien le VK_RETURN

  7. #7
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonjour,

    Citation Envoyé par mistercactus
    Et si tu essaies de connecter un autre événement sur ton composant (genre un showmessage sur l'événement onChange), ça fonctionne ?
    Oui ca marche, bon je vais voir avec votre lien de la faq merci
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

  8. #8
    Membre éclairé Avatar de freud
    Homme Profil pro
    Développeur
    Inscrit en
    Mai 2002
    Messages
    1 271
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 271
    Points : 681
    Points
    681
    Par défaut
    Bonsoir à tous,

    Dans l’événement HandleEnter du composant JvEnterAsTab1 il faut ajouter la class TEdit je ne comprend pas pourquoi il n'en pas tenu compte en tout cas c'est réglé.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.JvEnterAsTab1HandleEnter(Sender: TObject;
      AControl: TWinControl; var Handled: Boolean);
    begin
    Handled := (AControl is TEdit) ;
    end;
    Ou on peut désactiver certains controles comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure TForm1.JvEnterAsTab1HandleEnter(Sender: TObject;
      AControl: TWinControl; var Handled: Boolean);
    begin
    Handled := (AControl is TButtonControl) and not (AControl is TCustomCheckBox) and not (AControl is TRadioButton);
    end;
    Je me suis gouré dans le 1er post, en faite le 1er edit qui marchait n'en etait pas un Tedit mais un TrxCalcEdit

    Merci à tout le monde pour les interventions.
    Si quelqu'un t'a offensé, ne cherche pas à te venger; assieds-toi au bord de la rivière et, bientôt, tu verras passer son cadavre.

    Lao Tseu - un sage chinois

    Celui qui lutte contre les monstres doit veiller à ne pas le devenir lui-même.
    Et quand ton regard pénètre longtemps au fond d'un abîme, l'abîme, lui aussi, pénètre en toi.

    Friedrich Nietzsche - Par délà le bien et le mal

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

Discussions similaires

  1. Tedit et onkeydown
    Par chekkal dans le forum Composants VCL
    Réponses: 8
    Dernier message: 21/05/2018, 09h39
  2. Evénement OnKeyDown capricieux
    Par Bernard B dans le forum Composants VCL
    Réponses: 5
    Dernier message: 09/10/2017, 19h34
  3. [Python 3.X] Evènement onkeydown/up HTML et CGI Python
    Par LeSylf dans le forum Général Python
    Réponses: 0
    Dernier message: 11/10/2014, 19h53
  4. Evènement OnkeyDown + IE
    Par Chichoulinet dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 05/06/2008, 14h40
  5. TEdit : Autoriser uniquement les chiffres (utilisation du OnKeyDown)
    Par ero-sennin dans le forum Composants VCL
    Réponses: 4
    Dernier message: 25/01/2008, 09h43

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