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 :

[Delphi 2005] OnKeyPressed inactif sur la touche [ENTREE]


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut [Delphi 2005] OnKeyPressed inactif sur la touche [ENTREE]
    Bonjour à tous,

    Dans une TListBox, j'utilise l'événement OnKeyPressed. Seulement, cet événement me détecte toutes les touches ASCII sauf la touche entrée.
    Voilà le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    procedure MaFiche.ListBoxKeyPress(Sender: TObject; var Key: Char);
    begin
      ShowMessage('Key Pressed : '+ Key);
      if not (Key = #13) then Key := #0 else
      begin etc...
    Lorsque je fais [entrée], je n'obtiens aucun message, preuve que cette touche n'est pas détectée, et le composant suivant prend le focus...

    Avez-vous une explication ? Merci d'avance.

  2. #2
    Membre émérite
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Par défaut
    Tente de déplacer ton évènement dans le onKeyDown (il survient en premier).
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    Ok et merci.

    Même problème avrc OnKeyDown. Par contre ça fonctionne bien avec OnKeyUp... Je trouve ça un peu "bidouillage", non ? As-tu une explication ?

  4. #4
    Membre émérite
    Avatar de MD Software
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    613
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 613
    Par défaut
    Je suis surpris que ça marche avec le keyUp plutôt que le KeyDown, mais bon.

    Le ocmposant doit intercepter la touche. C'est la seule explication que je vois.
    MD Software
    ---------------------------
    F.A.Q. Delphi - Cours Delphi - Composants Delphi - Sources Delphi

  5. #5
    Membre confirmé Avatar de phplive
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    179
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 179
    Par défaut
    Etrange ...

    Avec Delphi 7 et une listbox tout ca qu'il y a de plus standard ca marche bien !

    Tu es sûr que tu n'interceptes pas déjà cette touche à un niveau plus bas ?

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    Non, je ne pense pas... D'autant plus étrange que sur une autre fiche, le OnKeyPress fonctionne bien... J'essaie de comprendre...

    Normalement, avec le ShowMessage dans l'événement, je devrais récupérer le code de la touche Entrée... Là, je n'ai rien...

  7. #7
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    5 236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 236
    Par défaut
    Dans le onkeydown

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Case Key of
      VK_RETURN: begin
        Showmessage('ENTRER');
      end;
    end;
    C'est normal que tu ne recupères pas le code du caractère entrée vu que ce n'est pas un code caractère visible (< 32 en ASCII).
    Modérateur Delphi

    Le guide du bon forumeur :
    __________
    Rayek World : Youtube Facebook

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    Salut Malatar,

    Pour le OnKeyPress, voilà ce que dit l'aide :
    OnKeyPress enregistre le caractère ASCII correspondant à la touche enfoncée. Les touches n'ayant pas d'équivalent ASCII (Maj ou F1, par exemple) ne génèrent pas d'événement OnKeyPress. Les combinaisons de touches (comme Maj+A), ne génèrent qu'un seul événement OnKeyPress (dans cet exemple, Maj+A donne pour Key la valeur "A" si Verr Maj est désactivé). Pour répondre aux touches non-ASCII ou aux combinaisons de touches, utilisez le gestionnaire d'événement OnKeyDown ou OnKeyUp.
    Or, toi, tu dis :

    C'est normal que tu ne recupères pas le code du caractère entrée vu que ce n'est pas un code caractère visible
    La distinction ne se fait pas sur le fait qu'1 caractère soit visible ou non, mais sur le fait que le caractère ait une représentation ASCII. Ce qui est le cas de [Entrée].

    En testant un peu mieux mon cas, j'ai la nette impression que lorsqu'il existe un autre composant sur la fiche (Combo, Edit, Bouton...) le OnKeyPress ne détecte plus correctement la touche Entrée.

    Est-ce spécifique à ma version de Delphi ou à mon install ?

  9. #9
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Tu n'aurais pas un bouton avec la propriété Default à True, sur ta fiche ? Ou un évènement OnKeyPress sur ta fiche, traité grâce à KeyPreview=True ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  10. #10
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    Dans le mille Mac Lak. Je viens de tester.

    Par défaut, je donne toujours la possibilité à l'utilisateur de sortir de la fiche par Esc... Donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     KeyPreview := True et OnkeyPress sur la fiche  // ben tiens !
    Bor. de. mer ! J'ai même pas pensé à ça !

    Un trés grand merci !

    (Par contre, j'ai mis la propriété Default := false pour les boutons)

  11. #11
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Vulcanos
    Bor. de. mer ! J'ai même pas pensé à ça !
    Toujours vérifier les trucs "évidents", y compris les trucs dont "on est sûr"... C'est dingue le nombre de bugs que j'ai pu trouver dans des fonctions/modules "testés"...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  12. #12
    Membre confirmé

    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 142
    Par défaut
    Ouais, bien d'accord avec toi... Et depuis le temps que je fais ce noble métier, je tombe encore dans la marmite pleine de poix...

    Et puisque tu me donnes l'occasion d'1 grand moment de vérité, je pense qu'1 regard extérieur aide à mieux percevoir ces évidences (le forum et ta réponse en sont des preuves).

    Le fin du fin étant d'acquérir soi-même ce même regard extérieur par rapport à ses propres elucubrations... J'en ai terminé avec ces considérations digne de Lao-Tseu

    Merci encore.

  13. #13
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Citation Envoyé par Vulcanos
    Et depuis le temps que je fais ce noble métier, je tombe encore dans la marmite pleine de poix...
    Parceque tu crois être le seul ? J'ai "trouvé" la solution parceque j'ai eu le même problème, un jour... ;-)

    Citation Envoyé par Vulcanos
    je pense qu'1 regard extérieur aide à mieux percevoir ces évidences
    Principe même du "pair-programming", et j'ai déjà constaté que c'est extrêmement efficace, à condition d'avoir des développeurs complémentaires, et non pas des "clones".

    Bon KeyPress ! ;-)
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

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

Discussions similaires

  1. sortir d'une boucle en cliquant sur la touche entree ?
    Par bounadalvidal dans le forum Débuter
    Réponses: 3
    Dernier message: 21/12/2010, 17h39
  2. listener suite clique sur la touche entree
    Par riadhhwajdii dans le forum JSF
    Réponses: 0
    Dernier message: 26/06/2009, 18h00
  3. soumettre le form en cliquant sur la touche ENTREE
    Par john_wili dans le forum Struts 1
    Réponses: 0
    Dernier message: 09/04/2009, 19h00
  4. détecter l'appui sur la touche Entree
    Par john_wili dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 11/02/2009, 17h42
  5. Réponses: 4
    Dernier message: 16/11/2005, 17h12

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