![]() |
ListView - Zeile herrausfinden
Hallo,
ich bin mir ja beinahe sicher, dass es sowas schon mal gab, aber ich hab bestimmt über ne Stunde gesucht und alles gefunden nur das nicht^^ Folgendes Problem: Ich hab ein TListView aus dem ich beim Mausklick den Zeilenindex auslesen will. Hab das Gefühl es ist banal einfach aber ich komm gerade irgendwie nicht drauf. Im Voraus vielen Dank :) |
Re: ListView - Zeile herrausfinden
Zitat:
|
Re: ListView - Zeile herrausfinden
Meinst Du TListView.Selected?
|
Re: ListView - Zeile herrausfinden
Selected ist das primäre selektierte Item. Der Index ist über ItemIndex zu ermitteln.
|
Re: ListView - Zeile herrausfinden
Naja, gut, aber wie schaut das aus, wenn ich auf ein Subitem klick?
|
Re: ListView - Zeile herrausfinden
Das einfachste wäre rowselect auf True zu setzen und die spalten auf die ganze breite zu ziehen. ansonsten kannst du die mausposition ermitteln und anhand des DisplayRect der Items ermitteln welches Item darunter liegt.
|
Re: ListView - Zeile herrausfinden
|
Re: ListView - Zeile herrausfinden
Genau das brauch ich für die zeile^^
Ich hab eine Tabelle mit 50 Zeilen und mit jeweils 3 Subitems. Und ich will, egal ob ich auf die Caption oder auf ein Subitem klicke, die Zeile wissen. Danke für die bisher gebrachten Vorschläge :) |
Re: ListView - Zeile herrausfinden
Hi,
so etwa?
Delphi-Quellcode:
procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var i: integer; begin for i:= 0 to Pred(ListView1.Items.Count) do if PtInRect(Listview1.Items.Item[i].DisplayRect(drBounds), Point(x, y)) then begin Caption:= Format('Item: %d', [i]); break; end; end; |
Re: ListView - Zeile herrausfinden
Ganz genau das meinte ich.
Dankeschön :wink: |
Re: ListView - Zeile herrausfinden
Hallo.
Zitat:
Würde es nicht genügen nur die sichtbaren Items zu testen? TopItem und VisibleRowCount könnten dabei helfen. Grüße vom marabu |
Re: ListView - Zeile herrausfinden
Hallo,
in seinem Fall sollen es ja nur 50 Einträge sein, aber ansonsten hast du sicherlich recht. Ich hoffe mal, dass es so besser ist.
Delphi-Quellcode:
procedure TForm1.ListView1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); var Loop, LastItem : integer; begin if (Sender is TListView) and (TListView(Sender).Items.Count > 0) then begin LastItem := TListView(Sender).TopItem.Index + TListView(Sender).VisibleRowCount; if TListView(Sender).Items.Count = LastItem then LastItem := Pred(TListView(Sender).Items.Count); for Loop := TListView(Sender).TopItem.Index to LastItem do if PtInRect(TListView(Sender).Items.Item[loop].DisplayRect(drBounds), Point(X, Y)) then begin Caption := inttostr(Loop);//Beispiel break; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:01 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