SStab

Le
Cindy
Bonjour tous,

J'aimerai savoir s'il est possible de changer d'onglet
d'un contrle Sstab juste en positionnant le curseur de la
souris sur l'onglet dsir. Dans l'affirmative, quel
vnement ou proprit utiliser?

D'avance, merci pour votre aide.

Cindy
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
François Picalausa
Le #14711211
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" 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


Cindy
Le #14711031
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"

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




.



Publicité
Poster une réponse
Anonyme