Hey
ich habe folgendes Problem:
Ich hab ein SSTab - Objekt und möchte für jeden
Reiter ein eigenes Kontextmenü anzeigen.
Das bedeutet ich muss, wenn rechtsgeklickt wird,
einen virtuellen Linksklick ausführen, damit
der Reiter ausgewählt wird, welcher sich unter
dem Mauszeiger befindet.
Ich hab das einfach mit der click-Funktion versucht,
also quasi
Private Sub SSTab1_MouseUp(Button as Integer, Shift as Integer, X as Single, Y as Single)
if Button = 2 then
SSTab1_Click 0
…
Anweisungen
…
end if
end sub
Man kann bei der Click-Funktion noch den Wert PreviousTab angeben, welcher für meine Zwecke aber völlig egal ist.
Das Problem ist nun:
Bei dieser Reihenfolge springt das Programm erst bei Punkt 4 rein, was vollkommen logisch ist. Nur Frage ich mich, wie ich bei Punkt 1 beginnen kann:
- Linksklick
- Tab springt um
- Click-Ereignis wird ausgelöst
- OnClick-Funktion wird ausgeführt
Vielen Dank im Vorraus.
Hendrik
Hallo,
Ich hab ein SSTab - Objekt und möchte für jeden
Reiter ein eigenes Kontextmenü anzeigen.
Das bedeutet ich muss, wenn rechtsgeklickt wird,
einen virtuellen Linksklick ausführen,
nein. Einen Mausklick zu simulieren ist nur in ganz seltenen Fällen eine gute Idee.
Du möchtest ja nur einen anderen Tab sichtbar schalten, das geht mit
SSTab1.Tab = n
ganz einfach und ohne Mausklick. So bleibt das Programm auch stabil.
Trotzdem noch den Code, wie Du einen Mousecklick simulieren kannst.
Wenn Du das aber in Deinem Programm verwendest, verrate nicht, daß Du den Code von mir hast. 
Option Explicit
Private Declare Sub mouse\_event Lib 'user32' \_
(ByVal dwFlags As Long, ByVal dx As Long, \_
ByVal dy As Long, ByVal cButtons As Long, \_
ByVal dwExtraInfo As Long)
Const MOUSEEVENTF\_LEFTDOWN = &H2
Const MOUSEEVENTF\_LEFTUP = &H4
Private Sub SSTab1\_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = 2 Then
mouse\_event MOUSEEVENTF\_LEFTDOWN Or MOUSEEVENTF\_LEFTUP, 0&, 0&, 1&, 0&
End If
End Sub
Gruß, Rainer