Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

SStab

2 réponses
Avatar
Cindy
Bonjour =E0 tous,

J'aimerai savoir s'il est possible de changer d'onglet=20
d'un contr=F4le Sstab juste en positionnant le curseur de la=20
souris sur l'onglet d=E9sir=E9. Dans l'affirmative, quel=20
=E9v=E8nement ou propri=E9t=E9 utiliser?

D'avance, merci pour votre aide.

Cindy

2 réponses

Avatar
François Picalausa
Hello,

En employant un Tabstrip (Microsoft Windows Common Controls) c'est possible:
Option Explicit

Private Const TCM_FIRST = &H1300 '// Tab control messages
Private Const TCM_HITTEST = (TCM_FIRST + 13)

Private Const TCHT_NOWHERE = &H1 'Click en dehors d'un tab
'Les constantes suivantes sont présentes à titre informatif.
'Private Const TCHT_ONITEMICON = &H2 'Click sur l'icône du tab
'Private Const TCHT_ONITEMLABEL = &H4 'click sur le texte du
tab
'Private Const TCHT_ONITEM = (TCHT_ONITEMICON Or TCHT_ONITEMLABEL) 'click
sur le texte et sur l'icône du tab

Private Type POINT
x As Long
y As Long
End Type
Private Type TCHITTESTINFO
pt As POINT
Flags As Long
End Type

Private Declare Function SendMessage Lib "user32" Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As
Any) As Long

Function TabHitTest(hwnd As Long, x As Single, y As Single) As Long
Dim HitTestInfo As TCHITTESTINFO, lngResult As Long
'Récupération des informations de position
HitTestInfo.pt.x = x
HitTestInfo.pt.y = y

'Envoie du HitTest
lngResult = SendMessage(hwnd, TCM_HITTEST, 0&, HitTestInfo)
'Si on a cliqué sur un onglet
If HitTestInfo.Flags <> TCHT_NOWHERE Then
TabHitTest = lngResult 'On renvoie l'index de l'onglet
Else
TabHitTest = -1 'Sinon, on renvoie -1
End If
End Function

Private Sub TabStrip1_MouseMove(Button As Integer, Shift As Integer, x As
Single, y As Single)
Dim lngTab As Long

lngTab = TabHitTest(TabStrip1.hwnd, x / Screen.TwipsPerPixelX, y /
Screen.TwipsPerPixelY)
If lngTab > -1 Then
TabStrip1.Tabs(lngTab + 1).Selected = True
End If
End Sub

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Cindy" a écrit dans le message
de news:346001c42923$99f32720$
Bonjour à tous,

J'aimerai savoir s'il est possible de changer d'onglet
d'un contrôle Sstab juste en positionnant le curseur de la
souris sur l'onglet désiré. Dans l'affirmative, quel
évènement ou propriété utiliser?

D'avance, merci pour votre aide.

Cindy


Avatar
Cindy
Je vais avoir du boulot pour ce WE, Merci infiniment pour
ton aide.

-----Message d'origine-----
Hello,

En employant un Tabstrip (Microsoft Windows Common


Controls) c'est possible:
Option Explicit

Private Const TCM_FIRST = &H1300 '//


Tab control messages
Private Const TCM_HITTEST = (TCM_FIRST + 13)

Private Const TCHT_NOWHERE = &H1 'Click


en dehors d'un tab
'Les constantes suivantes sont présentes à titre


informatif.
'Private Const TCHT_ONITEMICON = &H2 'Click


sur l'icône du tab
'Private Const TCHT_ONITEMLABEL = &H4 'click


sur le texte du
tab
'Private Const TCHT_ONITEM = (TCHT_ONITEMICON Or


TCHT_ONITEMLABEL) 'click
sur le texte et sur l'icône du tab

Private Type POINT
x As Long
y As Long
End Type
Private Type TCHITTESTINFO
pt As POINT
Flags As Long
End Type

Private Declare Function SendMessage Lib "user32"


Alias "SendMessageA"
(ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As


Long, lParam As
Any) As Long

Function TabHitTest(hwnd As Long, x As Single, y As


Single) As Long
Dim HitTestInfo As TCHITTESTINFO, lngResult As Long
'Récupération des informations de position
HitTestInfo.pt.x = x
HitTestInfo.pt.y = y

'Envoie du HitTest
lngResult = SendMessage(hwnd, TCM_HITTEST, 0&,


HitTestInfo)
'Si on a cliqué sur un onglet
If HitTestInfo.Flags <> TCHT_NOWHERE Then
TabHitTest = lngResult 'On renvoie l'index de


l'onglet
Else
TabHitTest = -1 'Sinon, on renvoie -1
End If
End Function

Private Sub TabStrip1_MouseMove(Button As Integer, Shift


As Integer, x As
Single, y As Single)
Dim lngTab As Long

lngTab = TabHitTest(TabStrip1.hwnd, x /


Screen.TwipsPerPixelX, y /
Screen.TwipsPerPixelY)
If lngTab > -1 Then
TabStrip1.Tabs(lngTab + 1).Selected = True
End If
End Sub

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Cindy" a écrit


dans le message
de news:346001c42923$99f32720$
Bonjour à tous,

J'aimerai savoir s'il est possible de changer d'onglet
d'un contrôle Sstab juste en positionnant le curseur de




la
souris sur l'onglet désiré. Dans l'affirmative, quel
évènement ou propriété utiliser?

D'avance, merci pour votre aide.

Cindy




.