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

C++Builder Discussion :

Gestion clavier dans une form avec dbgrid [Non suivi]


Sujet :

C++Builder

  1. #1
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 23
    Points : 21
    Points
    21
    Par défaut Gestion clavier dans une form avec dbgrid
    Voila j'ai une form avec un DBGRID et DBNavigator.

    La touche "fin" me met en fin de ligne dbgrid et "home" en début : ok

    Maintenant j'aimerais utiliser une facon differente de faire :
    Shift + fin = fin de ligne du dbgrid
    Shift + home = debut de ligne du dbgrid
    fin = derniere ligne du dbgrid
    home = premiere ligne du dbgrid
    et une gestion particulière de la touche Suppr.

    là je vois pas du tout comment faire, si vous avez une solution...

    j'ai d'abord pensé à reutilisé ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void __fastcall TForm1::DBGridKeyPress(TObject *Sender, char &Key)
    {
      char keyString[25];
      keyString[0] = Key;
      strcpy(&keyString[1], " Was Pressed");
      Application->MessageBox(keyString , "Key Press", MB_OK);
     
    }
    Mais il ne m'intercepte pas ces touches

  2. #2
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    Les touches tels que les flèches, ou PageUp, PageDown, Début, Fin... ne sont pas détecté pas ce type d'action, il faut passer par une API.
    Pour intercepter les touches du clavier qui t'intéresse, tu peux faire ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if((GetAsyncKeyState(VK_END) & 0x8000) != 0)
    {
             Application->MessageBox("Tu viens de presser la touche Fin", "Touche appuyé", MB_OK);}
    Tu peux récupérer la touche début en remplaçant VK_END par VK_HOME .
    Voilà, bon courage.

  3. #3
    Membre à l'essai
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2004
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2004
    Messages : 23
    Points : 21
    Points
    21
    Par défaut
    Citation Envoyé par bandit boy
    Salut,
    Les touches tels que les flèches, ou PageUp, PageDown, Début, Fin... ne sont pas détecté pas ce type d'action, il faut passer par une API.
    Pour intercepter les touches du clavier qui t'intéresse, tu peux faire ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if((GetAsyncKeyState(VK_END) & 0x8000) != 0)
    {
             Application->MessageBox("Tu viens de presser la touche Fin", "Touche appuyé", MB_OK);}
    Tu peux récupérer la touche début en remplaçant VK_END par VK_HOME .
    Voilà, bon courage.
    Ok, merci pour l'info, mais je place ça ou ? faut utiliser un timer pour la vérification ou y a une autre solution ?

    PS : en utilisant un timer ça marche, mais je n'arrive pas à inhiber le comportement par défaut des touches début et fin

  4. #4
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    Salut,
    La solution du timer est la plus simple, par contre, pour l'inhibition de la commande je ne sais pas à première vue. Mais peut être faudrait-il chercher du côté de SetAsyncMode. (idée de passage à creuser)
    Affaire à suivre...

Discussions similaires

  1. [Débutant] un objet bouge dans une forme avec c++builder 6
    Par Imene MI dans le forum C++Builder
    Réponses: 7
    Dernier message: 14/05/2015, 17h02
  2. Réponses: 2
    Dernier message: 30/09/2012, 21h10
  3. [AC-2010] Forme avec macro dans une forme avec bouttons de nav
    Par nico_fr83 dans le forum IHM
    Réponses: 0
    Dernier message: 15/05/2010, 20h48
  4. Tabulation dans une form avec entrée
    Par Cl@rk dans le forum Windows Forms
    Réponses: 4
    Dernier message: 23/05/2008, 12h09
  5. [C#] Travailler efficacement avec les panels dans une forme
    Par WwiloO dans le forum Windows Forms
    Réponses: 8
    Dernier message: 27/06/2005, 15h33

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