Man könnte es so lösen:
Code:
[b]function[/b] GetItemAndColAt(ListView: TListView; X, Y: Integer;
out Item: TListItem; out Col: Integer): Boolean;
[b]var[/b] i, xx, w: Integer;
[b]begin[/b]
Result := False;
Col := -1;
[b]with[/b] ListView [b]do[/b]
[b]begin[/b]
Item := GetItemAt(X, Y);
[b]if[/b] Item = [b]nil[/b] [b]then[/b] Exit;
xx := 0;
[b]for[/b] i := 0 [b]to[/b] Columns.Count - 1 [b]do[/b]
[b]begin[/b]
w := Columns[i].Width;
[b]if[/b] (X >= xx) [b]and[/b] (X < xx + w) [b]then[/b]
[b]begin[/b]
Col := i;
Exit;
[b]end[/b] [b]else[/b] Inc(xx, w);
[b]end[/b];
[b]end[/b];
Result := True;
[b]end[/b];
Diese Funktion liefert in "out Col" die Spalte. Wenn keine aus irgendwelchen Gründen keine Spalte ausgewählt wurde, dann wird -1 zurückgeliefert. In "out Item" wird das zu X/Y passende ListItem zurückgeliefert.