Bonjour à tous
Je veux fixer la tabulation entre deux boutons et eux seuls. Je ne veux pas que TAB mette le focus sur un autre contrôle par exemple le boutons QUITTER.
Voici ce que ça donne :
Comment faire ?
Merci![]()
Bonjour à tous
Je veux fixer la tabulation entre deux boutons et eux seuls. Je ne veux pas que TAB mette le focus sur un autre contrôle par exemple le boutons QUITTER.
Voici ce que ça donne :
Comment faire ?
Merci![]()
Salut
Si je me base uniquement sur ce que tu présentes, tu n'as rien à faire puisque les labels et panels ne prennent pas le focus.
Si d'autres contrôles "focusables" sont présents alors il suffit simplement de mettre leurs propriétés TabStop à False.
@+ Claudius
Utilise des SpeedButton a lieux de TButtonJe veux fixer la tabulation entre deux boutons et eux seuls. Je ne veux pas que TAB mette le focus sur un autre contrôle par exemple le boutons QUITTER.
Les panels sont focusablesSi je me base uniquement sur ce que tu présentes, tu n'as rien à faire puisque les labels et panels ne prennent pas le focus.
OK. Mais impossible d'intercepter VK_TAB (touche tabulation) !
Que ce soit avec KeyPress ou KeyDown, rien à faireLe focus change bien, mais je ne peux pas intercepter le vk_tab pr le traiter comme je veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TForm1.Btn_NonKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if Key = 27 then Refuser_Confirmation; if Key = vk_Tab then Basculer_Focus_Oui_Non; end;
Avec une demande explicite avec SetFocus, mais pas avec la touche TAB ou encore un clic sur ce panel.
Pour quoi faire ?
Reprenons, quels sont les composants présents sur ta fiche ?
Car je ne comprends ton problème. Si comme tu le montres dans ton 1° message il n'y a que des panels, labels et les 2 boutons, TAB te fera basculer de l'un vers l'autre des deux boutons.
Voilà : c'est exactement ça. Et TAB le fait bien.
MAIS je veux modifier l'apparence du bouton détenant le focus (le mettre en relief, quoi, fsBold, modif de couleur, etc). Donc, lorsque TAB bascule le focus de l'un à l'autre, je dois envoyer des instructions. Comment le faire si je n'arrive pas à détecter l'appui sur TAB ??
C'est là le seul pb. Au départ, le bouton "focusé" est bien en relief... mais à l'appui de TAB, il ne change pas ! Même si c'est bien l'autre bouton qui détient alors le focus !
TAB (VK_TAB) est réellement indétectable ?
Re,
Utilise les événements OnEnter et OnExit des boutons.
Que tu implémentes par exemple comme ceci:
Il suffit d'assigner des 2 événements à tes 2 boutons.
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 procedure TForm1.BtnEnter(Sender: TObject); begin with TButton(Sender) do begin Font.Style := [fsBold]; Font.Color := clBlue; end; end; procedure TForm1.BtnExit(Sender: TObject); begin with TButton(Sender) do begin Font.Style := []; Font.Color := clBlack; end; end;
@+ Claudius
Ca marche pasJ'ai fini par déboucher là-dessus :
J'ai essayé avec ton With et Sender : pas de réaction.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 procedure TForm1.Btn_NonKeyPress(Sender: TObject; var Key: Char); begin Touche := integer(Key); if Touche = 27 then Refuser_Confirmation else Focuser_Btn_Oui; end;
De toute façon, TAB n'est pas interceptée à contrario de toutes les autres touches !! Donc, la procédure Focuser_Btn_Oui n'est appelée que si je tape sur a,b,c.... etc, mais pas TAB.
TAB déplace effectivement le focus d'un bouton à l'autre, mais c'est tout. Comme on ne peut pas la détecter, on n epeut pas la traiter. C'est comme si le compilo se chargeait de tout sitôt que TAB est appuyée, et qu'il empêche le programmeur d'implémenter du code.
Les routines Focuser_Btn_Oui et Focuser_Btn_Non sont bien appelées... mais pas si je tape sur TAB !!! C'est fou ça...
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
18
19
20
21
22
23 procedure Focuser_Btn_Oui; begin Form1.Btn_Oui.SetFocus; Form1.Btn_Oui.Font.Style := [fsBold]; Form1.Btn_Oui.ColorText := clRed; Form1.Btn_Non.Font.Style := []; Form1.Btn_Non.ColorText := clBlack; end; procedure Focuser_Btn_Non; begin Form1.Btn_Non.SetFocus; Form1.Btn_Non.Font.Style := [fsBold]; Form1.Btn_Non.ColorText := clRed; Form1.Btn_Oui.Font.Style := []; Form1.Btn_Oui.ColorText := clBlack; end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager