Passage d'un Index tabstrip au suivant avec les touches Ctrl/Tab [Résolu]

Signaler
Messages postés
7
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
30 octobre 2012
-
Messages postés
7
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
30 octobre 2012
-
Bonjour,



Je voudrais savoir s'il existe un moyen avec Visual Basic 6, de passer
d'un index Tabstrip à un autre en utilisant les touches Ctrl/TAB et
Ctrl/Alt/Tab où que l'on soit positionné dans une fenêtre.

J'ai essayé en utilisant l'évenement KEYDOWN, mais il faudrait le
déclarer pour tous les objets de la fenêtre... est-ce bien judicieux ?



Merci


Doryam

3 réponses

Messages postés
7
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
30 octobre 2012

Voilà une solution possible



Il faut positionner le parametre "KeyPreview" de la fenêtre sur True,
ce qui permet à la fenêtre de recevoir les événements de clavier de
tous ses contrôles. Ensuite, il faut utiliser l'événement
"KeyDown" de la Form comme suit:



' Enum des frames en relation avec le Tabstrip tabContainer

Private Enum enmTabs

enmtHaupt = 1

enmtAdresse = 2

enmtOeffnung = 3

enmtCodierung = 4



enmtTabCount = 4

End Enum



Public Function IsAltKeyPressed(ByVal Shift As Integer) As Boolean

IsAltKeyPressed ((Shift And vbAltMask) vbAltMask)

End Function



Public Function IsCtrlKeyPressed(ByVal Shift As Integer) As Boolean

IsCtrlKeyPressed ((Shift And vbCtrlMask) vbCtrlMask)

End Function



Public Function IsShiftKeyPressed(ByVal Shift As Integer) As Boolean

IsShiftKeyPressed ((Shift And vbShiftMask) vbShiftMask)

End Function



Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

'Ctrl/Tab or Ctrl/Alt/Tab Switch to next tabStrip index

If KeyCode = vbKeyTab Then

If gControl.IsCtrlKeyPressed(Shift) Then

Dim lngUserTab As Long




'Cacher tous les frames fraContainer en relation avec les Tabs du
tabstrip tabContainer

For lngUserTab = 0 To enmtTabCount - 1


fraContainer(lngUserTab).Visible = False

Next



If gControl.IsAltKeyPressed(Shift) Then


If tabContainer.SelectedItem.Index = 1 Then


tabContainer.Tabs.Item(enmtTabCount).Selected = True

Else


tabContainer.Tabs.Item(tabContainer.SelectedItem.Index - 1).Selected =
True

End If

Else


If tabContainer.SelectedItem.Index = enmtTabCount Then


tabContainer.Tabs.Item(1).Selected = True

Else


tabContainer.Tabs.Item(tabContainer.SelectedItem.Index + 1).Selected =
True

End If

End If

End If

End If

End Sub



En fait, c'est comme le principe d'archimède:

Tout corps plongé dans l'eau en ressort mouillé. Hem


Doryam
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Salut
Bizarre comme question : Normalement, c'est Windows (et pas ton application) qui gère ces touches de raccourci.
Aurais-tu reconfiguré des raccourcis ou genre de HotKey ?
Pas de solution en vue.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
(je
Messages postés
7
Date d'inscription
lundi 6 septembre 2004
Statut
Membre
Dernière intervention
30 octobre 2012

En fait, j'ai d'autres objets dans la fenêtre tels que des textbox. Supposons que je soit positionné sur une textbox, alors mon raccourci Ctrl/Tab va réagir pour ce textbox, et non pas pour le tabstrip dans lequel j'ai mon textbox. Il me faudrait en quelque sorte un évènement générique KEYDOWN pour ma fenêtre qui réagisse en priorité par rapport aux autres évènements KEYDOWN des objets contenus dans mon tabstrip.

Doryam