Home » Tipps & Tricks » Komponenten » TListBox/TComboBox » Item einer TListbox über die Mauskoordinaten erfahren

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;