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 :

checkbox caption et raccourci clavier


Sujet :

C++Builder

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut checkbox caption et raccourci clavier
    Bonjour à la communauté des programmeurs,

    je suis sous bcb 3.0 et je ne sais pas si il est possible de faire la chose suivante :
    j'ai un GroupBox avec plusieurs CheckBox a l'intérieur dont les captions sont par ex. &CB1 &CB2 &CB3.
    Lorsque je tape la touche C, le focus se place sur le checkbox "CB1" et l'active (checked = true). Lorsque je retape sur la touche 'c', il le desactive et ainsi de suite.

    Je voudrais le comportement suivant :
    - je tape une premiere fois sur c, le focus viens sur "CB1" MAIS ne l'active pas
    - je tape de nouveau sur c, le focus passe sur "CB2", sans l'activer
    - etc en boucle (CB1,CB2,CB3,CB1,...)

    bonne réflexion et merci d'avance.

  2. #2
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    toto223 a ecrit:
    Bonjour à la communauté des programmeurs,

    je suis sous bcb 3.0 et je ne sais pas si il est possible de faire la chose suivante :
    j'ai un GroupBox avec plusieurs CheckBox a l'intérieur dont les captions sont par ex. &CB1 &CB2 &CB3.
    Lorsque je tape la touche C, le focus se place sur le checkbox "CB1" et l'active (checked = true). Lorsque je retape sur la touche 'c', il le desactive et ainsi de suite.

    Je voudrais le comportement suivant :
    - je tape une premiere fois sur c, le focus viens sur "CB1" MAIS ne l'active pas
    - je tape de nouveau sur c, le focus passe sur "CB2", sans l'activer
    - etc en boucle (CB1,CB2,CB3,CB1,...)

    bonne réflexion et merci d'avance.
    Peut etre en capturant ton caractere tape, en faisant un teste pour voir si c'est bien le "c", puis renvoyer le code Tabulation qui fait passer le Focus a chaque CB.
    un lien vers la gestion du clavier et de la souris.
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

  3. #3
    Membre confirmé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 096
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 096
    Points : 633
    Points
    633
    Par défaut
    tu peux peut etre utiliser
    pour mettre le focus sur l'objet que tu veux.
    si apres verification que tu as bien tapé 'c'.
    tu utilise une variable qui te permet de savoir ou tu en es.

  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,
    En rejoignant le principe:
    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
    16
    17
     
    void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
    {
        if(Key == 'C')
        {
           if(C++ == 3) C = 1;
           switch(C)
           {
              case 1:CheckBox1->SetFocus();
                     break;
              case 2:CheckBox2->SetFocus();
                     break;
              case 3:CheckBox3->SetFocus();
                     break;
           }
        }
    }
    Chaque appuie sur la touche 'C' (attention, pas 'c') change le Focus d'un ChexkBox à l'autre.
    Il faut déclarer au préalable C, et autoriser l'appuie sur les touches de la Form en mettant à true la propriété KeyPreview de la Form.

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bandit,

    ta solution ne me convient pas car je ne connait pas le nom des CheckBox concernés par la touche 'C' (création dynamique). Et puis c'est très lourd a mettre en place (switch + ecriture pour chaque lettre-raccourci).

    Je pensais plus à quelque chose qui modifie la facon dont doit se comporter le CheckBox lorsque on tape sur la touche raccourci (définie par le caption). Peut on définir un objet TCheckBox-perso qui hérite de toutes les propriètés de TCheckBox sauf de l'activation lorsqu'on appuie sur la touche raccourci ?

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Novembre 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par blondelle
    toto223 a ecrit:

    Peut etre en capturant ton caractere tape, en faisant un teste pour voir si c'est bien le "c", puis renvoyer le code Tabulation qui fait passer le Focus a chaque CB.
    un lien vers la gestion du clavier et de la souris.
    Je ne sais pas ce que tu entends par "le code Tabulation qui fait passer le Focus a chaque CB"
    Tester les captions de tous les CB voir si un contient "&c" et lui donner le focus avec ->SetFocus() ?

  7. #7
    Rédacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Points : 3 766
    Points
    3 766
    Par défaut
    toto223 a ecrit:
    Je ne sais pas ce que tu entends par "le code Tabulation qui fait passer le Focus a chaque CB"
    Tester les captions de tous les CB voir si un contient "&c" et lui donner le focus avec ->SetFocus() ?
    C'est tres simple tu capture la ou les touches comme l'a ecrit bandit boy et tu envoye le code de la touche TAB ton Focus change de CheckBox a chaque fois.
    Le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
    // ne pas oublier de mettre sur la form KeyPreview a true
    // mettre la propriete TabOrder des CheckBox dans l'ordre
    // que l'on veu quelles soient selectionnees
    {
    if(Key == 'C'|| Key == 'c')
    {
    // ici on simule l'appui de la touche TAB
    keybd_event(VK_TAB,0,0,0);
    }
    }
    --
    Plutot que d'essayer de réinventer la roue, apprenons à nous en servir

Discussions similaires

  1. [JTable] Raccourci clavier sur une Table
    Par sylvain_2020 dans le forum Composants
    Réponses: 5
    Dernier message: 05/07/2007, 09h01
  2. désactivation des raccourci clavier
    Par Arnaud-h dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/06/2004, 09h28
  3. [Debutant(e)] Liste raccourcis clavier
    Par lfournial dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 11/05/2004, 14h51
  4. [BPW]Raccourcis clavier dans une fenêtre enfant
    Par Alcatîz dans le forum Turbo Pascal
    Réponses: 2
    Dernier message: 18/02/2004, 20h07
  5. [] Raccourci clavier pour bouton d'une barre d'outil
    Par Sébastien dans le forum VB 6 et antérieur
    Réponses: 12
    Dernier message: 24/03/2003, 17h02

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