Hallo Lorenz,
in diesem Thread findest du zwei Ansätze um die Spalte in einer ListView zu ermitteln:
im listview onclick spaltenindex heraus finden
Delphi-Quellcode:
uses
CommCtrl;
function GetItemAt(lv: TListView; X, Y: Integer; var iSubItem: Integer): TListItem;
var
hti: TLVHitTestInfo;
begin
hti.pt := Point(X, Y);
iSubItem := ListView_SubItemHitTest(lv.Handle, @hti);
if iSubItem >= 0 then
begin
Result := lv.Items[iSubItem];
iSubItem := hti.iSubItem;
end else Result := nil;
end;
procedure TDemoForm.ListViewInfoTip(Sender: TObject; Item: TListItem;
var InfoTip: String);
var
p: TPoint;
li: TListItem;
iItem, iSubItem: Integer;
begin
p := ScreenToClient(Mouse.CursorPos);
li := GetItemAt(Sender as TListView, p.X, p.Y, iSubItem);
if Assigned(li)
then iItem := li.Index
else iItem := -1;
InfoTip := Format('Item %d SubItem %d', [iItem, iSubItem]);
end;
Getestet habe ich mit TListView - und dort funktioniert es.
Grüße vom marabu