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

 Delphi Discussion :

Procédure à partir d'une touche clavier


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 23
    Par défaut Procédure à partir d'une touche clavier
    Bonjour à tous,
    Est-ce qu'une âme éclairée pourrait me montrer comment lancer une procédure qui est déjà inclue dans un Button à partir d'une touche clavier, en l'occurence la touche UP ARROW (#24) ? (En fait je voudrais pouvoir exécuter cette procédure à partir du Button ou à partir de la touche).
    Merci d'avance pour vos lumières.

  2. #2
    Membre Expert

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Par défaut
    Salut

    Il te suffit d'appeler dans l'evenement OnKeyDown la procedure Button1Click si la touche appuyée est la bonne ... (Test sur Key)

    Bonne chance

  3. #3
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Citation Envoyé par mick605 Voir le message
    Il te suffit d'appeler dans l'evenement OnKeyDown la procedure Button1Click si la touche appuyée est la bonne ... (Test sur Key)
    Cela ne fonctionnera pas. Tout du moins pas avec les touches de direction...
    Ni avec la touche "HOME" car le code 24 correspond à la touche "HOME" et non pas à UP ARROW. (code 26) Voir la liste des scancodes.

    Et c'est logique car les flèches de direction permettent la navigation avec le clavier pour passer d'un bouton à l'autre par exemple.

    Pour arriver à capturer les actions sur les touches spécifiques, if faut d'une part inhiber la capture de celles-ci par le composant en mettant TabStop à False. Ensuite on demande à la fiche de capturer les actions clavier en mettant KeyPreview à True.

    Il suffit alors d'utiliser l'événement pour traiter les actions sur le clavier. Par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      case Key of
        VK_Home:  Caption:='Origine (Home)';
        VK_UP:    Caption:='Direction montée';
      end;
    end;

  4. #4
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 23
    Par défaut
    Bonjour à tous,
    Merci à Mick 605 et DOLPat pour les réponses. J'ai suivi la procédure de DOLpat. Pour tout dire cela ne fonctionne pas correctement. J'obtiens un résultat plutôt surprenant. La touche VK_UP ne fonctionne pas. Après réflexion j'ai essayé toutes les touches une à une et j'ai trouvé que la touche 'Enter' fonctionnait quand le focus se trouvait sur le Button et la procédure inclue dans ce Button était appliquée. Mais j'ai aussi trouvé que si je plaçais le focus sur un autre Button, la touche 'Enter' appliquait la procédure inclue dans cet autre Button.
    Question 1 : Pourquoi la touche 'Enter' fonctionne-t-elle alors que j'ai écrit VK_UP ?
    Question 2 : Pourquoi puis-je appliquer la procédure inclue dans un autre bouton alors que je ne l'ai pas écrit dans le FormKeyDown ?
    La remarque de DOLpat concernant les flèches est également pertinente et j'ai donc décidé d'utiliser plutôt la touche 'u' qui, si je ne me trompe pas cette fois correspond au chiffre '55'. Et en fait je voudrais pouvoir appliquer la procédure du Button à partir de la touche 'u' sans que le focus soit spécialement placé sur le Button, est-ce possible ?
    Comment faire dans ce cas ?
    D'avance merci d'éclairer ma lanterne.

  5. #5
    Membre émérite Avatar de DOLPat®
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Février 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 426
    Par défaut
    Je ne vois pas pourquoi cela ne fonctionnerait pas. Focus ou pas focus, les événements du clavier doivent se produire dans la procédure FormKeyDown si tu as mis KeyPreview de la fiche à True et TabStop de tes boutons à false.

    Peut-tu nous montrer ton code ?

  6. #6
    Membre averti
    Homme Profil pro
    Technicien réseaux et télécoms
    Inscrit en
    Octobre 2011
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseaux et télécoms
    Secteur : Transports

    Informations forums :
    Inscription : Octobre 2011
    Messages : 23
    Par défaut
    Bonjour DOLpat,
    Merci de ta réponse.
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    procedure TFMain.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
      case Key of
        VK_UP: Button2click(Sender);
      end;
    end;
    KeyPreview de la Fiche est à True,
    TabStop du Button concerné est à False et OnKeyDown : FormKeyDown
    Y-a-t'il autre chose à ajouter ?

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 19/03/2009, 16h24
  2. Réponses: 2
    Dernier message: 16/05/2006, 23h57
  3. Simuler une touche clavier
    Par micky13 dans le forum Langage
    Réponses: 9
    Dernier message: 17/04/2006, 20h08
  4. Comment remplacer une fonction d une touche clavier
    Par dominic75 dans le forum Autres Logiciels
    Réponses: 5
    Dernier message: 10/04/2006, 17h09
  5. [Applet]simuler une touche clavier
    Par mat10000 dans le forum Interfaces Graphiques en Java
    Réponses: 19
    Dernier message: 12/12/2003, 16h23

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