Rubrik: Controls · ListBox | VB-Versionen: VB4, VB5, VB6 | 04.12.03 |
ListBox mit laufender ToolTip-Anzeige Diesmal zeigen wir Ihnen, wie sich in der Standard-ListBox der Eintrag unter dem Mauszeiger als ToolTip anzeigen lässt. | ||
Autor: ArthurW | Bewertung: | Views: 13.455 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Heute zeigen wir Ihnen eine Möglichkeit, wie sich in der Standard-ListBox von VB der Eintrag unter dem Mauszeiger als ToolTip anzeigen lässt.
Erstellen Sie hierzu ein neues Projekt, platzieren auf die Form eine ListBox namens List1 und fügen nachfolgenden Code in das Codefenster der Form1 ein:
Option Explicit ' Benötigte API-Deklaration 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 Private Const LB_ITEMFROMPOINT = &H1A9
Private Sub Form_Load() ' ein paar Testeinträge With List1 .AddItem "orion.software@digitelone.com" .AddItem "Johann Wolfgang von Goethe" .AddItem "Dieter Otter http://www.vbarchiv.net" End With End Sub
Private Sub List1_MouseMove(Button As Integer, Shift As Integer, _ X As Single, Y As Single) ' ToolTip-Anzeige realisieren Dim lXPoint As Long Dim lYPoint As Long Dim lIndex As Long ' nur, wenn kein Mausbutton gedrückt ist If Button = 0 Then ' Umrechnen der Mauskoordinaten in Pixel lXPoint = CLng(X / Screen.TwipsPerPixelX) lYPoint = CLng(Y / Screen.TwipsPerPixelY) With List1 ' ListIndex anhand Mausposition ermitteln lIndex = SendMessage(.hwnd, LB_ITEMFROMPOINT, _ 0, ByVal ((lYPoint * 65536) + lXPoint)) ' ToolTip anzeigen... If (lIndex >= 0) And (lIndex <= .ListCount) Then .ToolTipText = .List(lIndex) Else ' ... bzw. letzten ToolTip löschen .ToolTipText = "" End If End With End If End Sub
Starten Sie das Projekt und bewegen den Mauszeiger auf einen Eintrag. Warten Sie kurz, bis der ToolTip erscheint und bewegen den Mauszeiger dann auf einen anderen Eintrag