![]() |
Listview und Zeile und Spalte einer Zelle
Ich brauche in einem Kontextmenü vom Listview die Zeile und die Spalte einer Zelle in der der Benutzer das Kontextmenü geöffnet hat. Hat da jemand eine Idee, wie ich da drankommen könnte? ich habe da keinen Plan.
Also über
Delphi-Quellcode:
bekomme ich ja die Koordinaten relativ zur linken oberen Ecke des Listviews. Aber wie komme ich aus den Koordinaten jetzt an den Spalten- und Zeilenindex?
procedure TfrmMain.lvCSVFileMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin ShowMessage(IntToStr(x)); end; |
AW: Listview und Zeile und Spalte einer Zelle
Habe es hinbekommen.
Einzelnes Feld:
Delphi-Quellcode:
Ganze Zeile:
procedure TfrmMain.lvCSVFileMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin if Button = mbRight then begin FX := X; FY := Y; FPopupMenuListItem := lvCSVFile.GetItemAt(X, Y); end; end; procedure TfrmMain.GetSubItemFromPoint(X, Y: Integer; var SubItem: Integer); var hti: TLVHitTestInfo; begin hti.pt := Point(X, Y); SubItem := ListView_SubItemHitTest(lvCSVFile.Handle, @hti); if SubItem > 0 then begin FPopupMenuListItem := lvCSVFile.Items[SubItem]; SubItem := hti.iSubItem; end else FPopupMenuListItem := nil; end; procedure TfrmMain.pmCopyFieldClick(Sender: TObject); var SubItem: Integer; begin GetSubItemFromPoint(FX, FY, SubItem); if Assigned(FPopupMenuListItem) then begin if SubItem > 0 then Clipboard.AsText := FPopupMenuListItem.SubItems[SubItem-1]; end; end;
Delphi-Quellcode:
procedure TfrmMain.pmCopyRowClick(Sender: TObject);
var s: AnsiString; i: Integer; begin if Assigned(FPopupMenuListItem) then begin for i := 0 to FPopupMenuListItem.SubItems.Count - 1 do begin s := s + FPopupMenuListItem.SubItems[i] + FDelimiter; end; Setlength(s, Length(s) - 1); ClipBoard.AsText := s; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz