Item einer TListbox über die Mauskoordinaten erfahren
Nutzen Sie die Methode ItemAtPos, um das Item an einer bestimmten Koordinate zu erfahren. Ihr muss als Parameter eine Variable vom Typ TPoint, die die Koordinate enthält, und ein boolscher Parameter übergeben werden.Der boolsche Parameter steuert, wie sich die Funktion verhalten soll, falls an der Stelle kein Item vorliegt. Ist der Parameter True, gibt die Methode wirklich nur dann einen Index >-1 zurück, falls ein Item an der Stelle vorhanden ist. Ist der Parameter hingegen False, gibt ItemAtPos den um 1 erhöhten Index des letzten Eintrages zurück, falls sich die Koordinate unter dem letzten Eintrag befindet.Folgende Prozedur demonstriert die Anwendung der Methode. In einem Label wird der Index und Titel des sich an der Maus befindenen Items ausgegeben. Das passende Ereignis für diese Aufgabe ist das OnMouseMove-Ereignis der Listbox.
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var Idx: Integer; begin Idx:=ListBox1.ItemAtPos(Point(X,Y), True); if Idx-1 then Label1.Caption:=Format('[%d] %s', [Idx, ListBox1.Items[Idx]]) else Label1.Caption:='Kein Eintrag vorhanden'; end;