Code: |
procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var col: integer; li: TListItem; begin li := TListViewX(ListView1).GetItemAtX(x, y, col); if li <> nil then ShowMessage('Column #' + IntToStr(col)); end; |
Code: |
function acGetItemAt(lsv: TListView; X, Y: integer; var Col: integer): TListItem; // Получение по координатам элемента, над которым пользователь щелкнул. { Пример использования: procedure TForm1.ListView1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var col: Integer; li: TListItem; begin li:= acGetItemAt(ListView1, x, y, col); if li <> nil then ShowMessage('Column #' + IntToStr(col)); end; } var i, RelativeX, ColStartX: Integer; ListItem: TlistItem; HTI: TLVHitTestInfo; begin Result:= lsv.GetItemAt(X, Y); if Result <> nil then begin Col:= 0; // Первая колонка end else if (lsv.ViewStyle = vsReport) and (lsv.TopItem <> nil) then begin HTI.pt.x:= X; HTI.pt.y:= Y; lsv.Perform(LVM_SUBITEMHITTEST, 0, Integer(@HTI)); Col:= HTI.iSubItem; Result:= lsv.Items[HTI.iItem]; end; end; |
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!