Rubrik: Oberfläche · Menüs | VB-Versionen: VB4, VB5, VB6 | 03.10.03 |
sevMenuXP: PopUpMenu exakt positionieren Dieser Tipp verrät, wie sich ein sevMenuXP-PopUpMenü exakt unterhalb eines Objektes auf der Form anzeigen lässt. | ||
Autor: Dieter Otter | Bewertung: | Views: 12.978 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Viele Anwender verwenden mittlerweile nicht mehr das Standard-Menü von VB in Ihren Anwendungen, sondern das moderne Menüsystem der sevMenuXP Komponente.
Heute möchten wir Ihnen zeigen, wie sich ein Menü der sevMenuXP-Menüleiste als PopUp-Menü exakt unterhalb eines Objektes anzeigen lässt. Im nachfolgenden Beispiel soll hierzu das PopUp-Menü beim Klick auf einen CommandButton exakt unterhalb der Schaltfläche erscheinen. Die PopUp-Methode der MenuBar erwartet als Positionsangabe jedoch die X/Y-Koordinaten bezogen auf den Screen. D.h. mit der Left- und Top-Eigenschaft des CommandButtons kommen wir hier nicht weiter.
Ergo: Wir müssen zunächst die absolute Position des CommandButtons bezogen auf den Bildschirm ermitteln. Und wie das geht, erfahren Sie jetzt.
' benötigte API-Deklarationen Private Declare Function ClientToScreen Lib "user32" ( _ ByVal hwnd As Long, _ lpPoint As POINTAPI) As Long Private Type POINTAPI x As Long y As Long End Type
Private Sub Command1_Click() Dim P As POINTAPI ' Absolute Position des CommandButtons auf ' dem Bildschirm ermitteln Call ClientToScreen(Command1.hwnd, P) ' PopUp-Menü exakt unterhalb des ' CommandButton anzeigen With MenuBar1 .PopUp .MenuItems("MenuPopUp"), _ (P.x - 1), (P.y - 1) + _ ScaleY(Command1.Height, Me.ScaleMode, vbPixels) End With End Sub