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 :

Gestion de la pression d'une touche sur un composant [Lazarus]


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut Gestion de la pression d'une touche sur un composant
    Bonjour,

    J'ai crée un composant graphique, et j' aimerais gérer l'appuie des touches du clavier sur le composant. J'ai réussi à gerer les clique de la souris, mais avec le clavier je me bloque. J'ai essaie den surcharger les methodes KeyPressed(), KeyDown() et autres mais en vain. Je me suis dit qu'il falait peut etre passé par les propriétés, mais là j'avoue que je ne sais pas comment m'y prendre.

    Alors si vous avez des idées, ...

  2. #2
    Membre Expert
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Par défaut
    regarde du coté des fonction windows GetAsyncKeyState, sinon les evenements systeme WM_, CM_...
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  3. #3
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Je vais voir ce que ça donne.
    Sinon pour les fonction WM_ je crois que c'est pour capturer les mesage windows consernant le clavier. Je desire avoir une solution portable alors les WM_ me semble pas adaptées.

  4. #4
    Membre émérite
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Par défaut
    Salut,
    Ajoute dans le use l'unité LMessages

    Ensuite tu peux utiliser les évènements suivant en adaptant ton code en fonction de tes besoins.

    procedure WMEraseBkgnd(var Message: TLMEraseBkgnd); message LM_ERASEBKGND;
    procedure WMNotify(var Message: TLMNotify); message LM_NOTIFY;
    procedure WMSetFocus(var Message: TLMSetFocus); message LM_SETFOCUS;
    procedure WMKillFocus(var Message: TLMKillFocus); message LM_KILLFOCUS;
    procedure WMShowWindow(var Message: TLMShowWindow); message LM_SHOWWINDOW;
    procedure WMEnter(var Message: TLMEnter); message LM_ENTER;
    procedure WMExit(var Message: TLMExit); message LM_EXIT;
    procedure WMKeyDown(var Message: TLMKeyDown); message LM_KEYDOWN;
    procedure WMSysKeyDown(var Message: TLMKeyDown); message LM_SYSKEYDOWN;
    procedure WMKeyUp(var Message: TLMKeyUp); message LM_KEYUP;
    procedure WMSysKeyUp(var Message: TLMKeyUp); message LM_SYSKEYUP;
    procedure WMChar(var Message: TLMChar); message LM_CHAR;
    procedure WMSysChar(var Message: TLMKeyUp); message LM_SYSCHAR;
    procedure WMPaint(var Msg: TLMPaint); message LM_PAINT;
    procedure WMDestroy(var Message: TLMDestroy); message LM_DESTROY;
    procedure WMMove(var Message: TLMMove); message LM_MOVE;
    procedure WMSize(var Message: TLMSize); message LM_SIZE;
    Bon courage

  5. #5
    Rédacteur
    Avatar de darrylsite
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    1 299
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 299
    Par défaut
    Je viens de trouver la solution. Le probleme venait de Form.ActiveControl.
    J'ai trouvé ce post, et il m'a sauver
    http://forum.lazarus.freepascal.org/...p?topic=7462.0
    Merci

    Voila comment je l'ai mis en marche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    TMyDrawingControl = class(TCustomControl)
                           private
     
                           public
                            procedure MouseEnter; override;
                            procedure MouseLeave; override;
                            procedure KeyPress(var Key: char); override;
                            form : TForm;
                           end;
    ensuite
    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
     
    procedure TMyDrawingControl.MouseEnter;
    begin
     form.ActiveControl:=self;
    end;
     
    procedure TMyDrawingControl.MouseLeave;
    begin
     form.ActiveControl:=nil;
    end;
     
    procedure TMyDrawingControl.KeyPress(var Key: char);
    begin
      showMessage(key);
    end;

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

Discussions similaires

  1. arreter un traitement sur pression d'une touche
    Par scons dans le forum VBA Access
    Réponses: 7
    Dernier message: 16/07/2008, 14h37
  2. GObject et action à la pression d'une touche
    Par MrArtichaut dans le forum GTK+ avec C & C++
    Réponses: 3
    Dernier message: 25/04/2006, 11h31
  3. Réponses: 4
    Dernier message: 20/04/2006, 20h50
  4. Réponses: 7
    Dernier message: 16/03/2006, 20h54
  5. Simuler la pression d'une touche
    Par P4dre dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 09/08/2005, 16h31

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