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

Lazarus Pascal Discussion :

Diriger les infos d'un clavier vers divers TEdit [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut Diriger les infos d'un clavier vers divers TEdit
    Bonjour à toutes et à tous,

    J'ai un clavier virtuel dont toutes les touches envoient leurs valeurs dans un même évènement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TBase.Btn0Click(Sender: TObject);
    begin
      // procédure déclenchée par tous les boutons du pavé numérique
      S:= S + TBoutonCoinRond(Sender).Titre;
     end;
    J'ai plein de TEdit et je voudrais maintenant que cette information soit dirigée vers le TEdit qui a le focus. C'est idiot, mais je n'arrive pas à voir comment faire.

    La solution que j'ai trouvée me semble bâtarde. Quand je donne le focus à un TEdit, je lui affecte une valeur "ChoixEditeur" et je redirige le clavier vers lui selon la méthode suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure TBase.Btn0Click(Sender: TObject);
    begin
      // procédure déclenchée par tous les boutons du pavé numérique
      S:= S + TBoutonCoinRond(Sender).Titre;
        case ChoixEditeur of
      -1: txCode.Text:= S;
       0: txMdP.Text:= S;
       1: txMdPA.Text:= S;
       2: txMdPN.Text:= S;
       3: txMdPC.Text:= S;
       // ...
        end;
    end;
    Il doit y avoir mieux.

    Cordialement.

    Pierre.

  2. #2
    Membre éprouvé
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 022
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 022
    Points : 1 049
    Points
    1 049
    Par défaut
    Bon, j'ai trouvé une autre solution, je vais voir si elle me convient mieux.

    Après avoir déclaré une variable "EditSelect : TEdit", pour chaque TEdit, je dirige son évènement "Click" vers une même procédure dans laquelle j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    procedure TCfgParams.txInfoClick(Sender: TObject);
    begin
      EditSelect:= TEdit(Sender); // EditSelect pointe vers le TEdit "cliqué"
      S:= TEdit(Sender).Text; // La variable S est initialisée à la valeur de ce TEdit
    end;
    Maintenant, dans la méthode de mon clavier, j'écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TBase.Btn0Click(Sender: TObject);
    begin
      // procédure déclenchée par tous les boutons du pavé numérique
      S:= S + TBoutonCoinRond(Sender).Titre;
      EditSelect.Text:= S;
    end;
    Ça me va mieux. Il y a peut-être mieux.

    Cordialement.

    Pierre.

  3. #3
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 695
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 695
    Points : 13 133
    Points
    13 133
    Par défaut
    Le principe d'un clavier (physique ou tactile) est de remplir le buffer de clavier sans se préoccuper de la destination, c'est l'OS qui s'en charge.

    sous Windows, les commandes sont soit keybd_event, soit SendInput. L'avantage du deuxième est de pouvoir envoyer une suite de commandes ininterrompue sans interférence possible du clavier physique.

    A noter que les boutons doivent évidemment être de type TSpeedButton et ne pas prendre eux-mêmes la focalisation. Sinon ils seront récepteur des leurs propres commandes

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

Discussions similaires

  1. Diriger les tirs adversaires vers le joueur
    Par ataru dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/08/2017, 08h06
  2. copier les infos d'une fenêtre dos vers le bloc notes
    Par beegees dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 16/08/2005, 13h06
  3. [JMenu] Probleme Des Evenements du clavier vers les composants des
    Par Nadia_81 dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 05/06/2005, 23h14
  4. Extraire les infos d'un tag ID3
    Par patkiller dans le forum Langages de programmation
    Réponses: 11
    Dernier message: 30/05/2003, 14h35

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