Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Listview: Zellenclick (https://www.delphipraxis.net/899-listview-zellenclick.html)

theomega 22. Sep 2002 12:48


Listview: Zellenclick
 
Hallo
wie kann ich es realisieren, dass jenachdem auf welche Zelle geklickt wurde eine andere Funktion ausgeführt wird. Mein Listview hat rowselect = true, will heißen, es wird immer die ganze Zelle markiert. Dass soll auch so bleiben nur hätte ich gerne, dass beim Klick in verschiedene Zellen auch verschiedene Funktionen aufgeerufen werden. Dabei stellt sich auch ein weiteres Problem: Ich meine Spalten sind resizable, von dem her kann mann auch nicht so einfach über die x - Koorinaten arbeiten.

WEiß einer einer Lösung?

Danke

TO

jbg 22. Sep 2002 16:48

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.

theomega 22. Sep 2002 17:00

funzt nicht: Columns.Count gibt es nicht!

Daniel B 22. Sep 2002 17:05

Schonmal mit ListView1.Columns.Count probiert?

Grüsse, Daniel :hi:

theomega 22. Sep 2002 17:06

funzt auch nciht: es gibt kein listview.columns nur .colum Und dass erwartet sofort einen Index, es gibt kein Count!

RomanK 22. Sep 2002 17:40

also bei mir gibts es
Code:
listview1.Columns.Count
In der Hilfe die VCL und nicht die CLX nehmen!!!!

jbg 22. Sep 2002 18:35

Das Problem liegt an TCustomListView, des wider der in der Online Hilfe als published beschriebenen Eigenschaft Columns, diese als protected deklariert.

Ändere das TCustomListView im Prozedukopf in TListView um (so wie ich es oben bereits gemacht habe).

theomega 22. Sep 2002 18:39

Habe es selber gemerkt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz