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

Composants VCL Delphi Discussion :

[PageControl] Raccourcis claviers court-circuités


Sujet :

Composants VCL Delphi

  1. #1
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut [PageControl] Raccourcis claviers court-circuités
    Bonjour,
    je vous expose la situation :

    Situation 1 :
    On a une application avec un TPageControl, 2 TTabSheet et dedans un TEdit, les TabSheet ont pour caption : &profession, &Informations (donc raccourçi clavier sur le P et le I)

    on entre dans l'Edit, on tappe par exemple 'POIDS' rien ne se passe, à part l'écriture dans le Edit. Jusque là tout va bien. On appuie sur Alt+I le TabSheet Informations s'active. Jusque là, tout va bien.

    Situation 2 :
    On reprend la même appli, on ajoute sur le TabSheet profession un TStringGrid rempli avec une colonne de valeur alpha, comme des professions par exemple.
    On focus la StringGrid, on tappe sur I car on veut arriver sur la ligne de la profession 'Infirmière'
    Mais la stringGrid ne bouge pas et le TabSheet Informations s'active !

    Après enquête, nous avons appris que la StringGrid ne recevait pas le message WM_CHAR lorsqu'elle est placée sur un PageControl avec des raccourcis clavier.

    Testé avec une StringGrid, un RadioGroup...Mais on pense que beaucoup de composants de la VCL sont concernés

    L'un d'entre vous a-t-il déjà rencontré et résolu ce problème s'il vous plait ?

    Merci d'avance !


    Piste en cours : On a essayé de surcharger la procédure WndProc sur un dérivé de PageControl mais en fait on voit pas trop comment récupérer le Handle du paramètre Msg

  2. #2
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 420
    Points : 5 819
    Points
    5 819
    Par défaut
    salut


    bin les message sont pas tres dure a decortiquer
    voici la list des argument commun au message
    - le message à poster (WM_ )
    - wParam, qui est divisé en 2 parties :
    * les 16 bits de poids fort contiennent la commande à envoyer
    * les 16 bits de poids faible contiennent l'ID du composant qui recevra la commande
    - lParam, qui est le handle du controle qui envoie le message (pas obligatoire, tu peux le laisser à NULL)

    dans ton cas il suffit de tester le lparam non ?

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  3. #3
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Bonjour et merci,
    Je ne suis pas sûr d'avoir bien compris ton explication
    Il faut que je teste le message WM_CHAR arrivant sur mon dérivé de PageControl et si LParam est ma stringGrid alors je simule un KeyDown ?

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 420
    Points : 5 819
    Points
    5 819
    Par défaut
    salut

    je dirait plutot que tu redirige vers le string grid ou le pagecontrol
    selons la touche appuyer

    @+ Phil
    Nous souhaitons la vérité et nous trouvons qu'incertitude. [...]
    Nous sommes incapables de ne pas souhaiter la vérité et le bonheur, et sommes incapables ni de certitude ni de bonheur.
    Blaise Pascal
    PS : n'oubliez pas le tag

  5. #5
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    salut ,
    je ne comprends pas tout , si j'ai bien compris tu utilises la colonne avec les caracteres Apha de ton stringGrid comme des Raccourccis clavier ?
    est-ce cela ?
    et quand tu frappes le 'alt + I' c'est le Pagecontrol qui reçois le messages a la place de ton TstringGrid

    bye.
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  6. #6
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    Re salut , je viens de maniper un peu ..

    Ce que je vois :

    j'arrive a me position sur une rangé de ma stringGrid en captant le caractere dans le ONkeyPress et en fesant une recherche dans la colonne.
    mais seulement si ma grille est en mode edition.

    Par contre si ma grille n'est pas en mode edition , ou bien que si j'appuis sur une touche alors que le composant "focused" n'est pas editable , si un caractere de raccourci ( &xx.. ) AccelChar est defini dans la fiche, le controle possedant ce raccourci prends le focus .
    Cela semble normal sauf ,que l'aide delphi sur (AccelChar:Char) dit qu'il faut maintenir la touche ALT enfoncé pour selectionner le raccourci , et ce n'est pas le cas , les controles reçoivent le message meme si la touche ALT n'est pas enfoncé ! . donc cela implique que si des boutons possedent des raccoucis , ils sont "activés" par un simple appuie sur une touche .

    je me rapelle avoir modifié par le passé ( souvenir donc a verifier ) un composant bouton et pour resoudre se probleme de touche alt , j'avais utiliser le message
    CMDialogKey(var Message: TCMDialogKey)
    a la place de
    CMDialogChar(var Message: TCMDialogChar)

    je ne sais pas si cela peut d'aider , mais peut etre une voie de plus a explorer..

    bye
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  7. #7
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Merci à tous les 2,
    dans mon cas c'est dont le PageControl qui capte ces touches, mais c'est une bonne piste, merci !

    Je continue mes investigations

    A bientôt !

  8. #8
    Membre du Club

    Inscrit en
    Août 2002
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 36
    Points : 54
    Points
    54
    Par défaut
    bonjour,

    Manopower as tu trouvé la solution ?

    je suis dans le même cas,
    j'ai le meme problème

    @+

  9. #9
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Cela fait quelques années déjà ! (et j'ai toujours toutes mes dents !)

    De mémoire on a laissé tomber car le CP ne voulait pas que je code quelque chose qu'il ne comprenait pas (La gestion des messages) et nous avons adapté l'interface utilisateur pour contourner ce problème.

    Bon courage !

Discussions similaires

  1. portable Dell probleme court-circuit clavier ?
    Par olipopotam dans le forum Périphériques
    Réponses: 1
    Dernier message: 25/10/2012, 12h35
  2. [JTable] Raccourci clavier sur une Table
    Par sylvain_2020 dans le forum Composants
    Réponses: 5
    Dernier message: 05/07/2007, 09h01
  3. Réponses: 4
    Dernier message: 16/03/2004, 18h03
  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