Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   TListViewItem mit Custom Appearance... wo wurde hingeklickt? (https://www.delphipraxis.net/186740-tlistviewitem-mit-custom-appearance-wo-wurde-hingeklickt.html)

DeddyH 25. Sep 2015 11:27

TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
Grüezi,

ich habe hier eine FMX-ListView mit ItemAppearance Custom (Text, Detail und Image, letzteres rechts ausgerichtet). Das sieht so aus, wie ich das wollte, allerdings würde ich nun gerne auf einen Click auf das Image reagieren. Mein erster Gedanke war, im OnItemClickEx das übergebene ItemObject auszuwerten:
Delphi-Quellcode:
procedure TfrmMain.lvRunningItemClickEx(const Sender: TObject;
  ItemIndex: Integer; const LocalClickPos: TPointF;
  const ItemObject: TListItemObject);
begin
  if ItemObject is TListItemImage then
    //Bildchen geklickt
end;
Tut nix, lässt man sich den Klassennamen ausgeben, kommt "T" heraus. Eine andere Möglichkeit wäre, die Position auszuwerten (LocalClickPos wird ja auch übergeben). Da habe ich aber das Problem, die Koordinaten des Bildes relativ zum ListViewItem zu ermitteln. Hat jemand eine zündende Idee, es kann ja nicht sein, dass man sich mit solchen Niggeligkeiten immer wieder stundenlang aufhalten muss?

P.S.: XE8 aktuell

Union 25. Sep 2015 11:41

AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
Wo kommt denn das Item her?

DeddyH 25. Sep 2015 11:56

AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
Sry, das sollte ItemObject heißen, korrigiert.

Union 25. Sep 2015 11:57

AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
Wenn ich das mache, erhalte ich als Klassenname z.b. TListItemText. Du hast XE 10 im Profil. Die Signatur des Events ist aber dort eine ganz andere:
Delphi-Quellcode:
ItemClickEx(const Sender: TObject;
  ItemIndex: Integer; const [Ref] LocalClickPos: TPointF;
  const ItemObject: TListItemDrawable);
Im Bereich ListView hat sich sehr viel getan. Das musste ich auch schmerzlich erfahren, weil ich Appearance-Komponenten mit XE5 erstellt hatte und die Kompatibilität ist sehr schwer herzustellen.

DeddyH 25. Sep 2015 12:04

AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
In einem Testprojekt erhalte ich das jetzt auch, aber immer, egal, wo ich hinklicke. Und an diesem Projekt arbeite ich noch mit XE8, siehe Postscriptum ;)

bra 25. Sep 2015 13:20

AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
Wenn du einen langen Text im Listview anzeigst, geht der dann über das Bild hinaus? Eventuell muss man da mit Margins für die einzelnen Objekte arbeiten?

DeddyH 25. Sep 2015 13:50

AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
Diese Objekte verfügen über keine Margins-Eigenschaft :(

mensch72 25. Sep 2015 16:30

AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
XE10:
NUR wenn sich der ItemIndex gerade geändert hat, liefert ClickEx im ItemObject das richtige getroffene EinzelElement(z.B. TListItemText), sonst bekommt man nur "TListView" als "Absender" und muss halt selber mit "InRect" abfragen ob der Punkt im gewünschten (Image)Element ist


Delphi-Quellcode:
procedure TfrmPscreen.lvDevicesItemClickEx(const Sender: TObject;
  ItemIndex: Integer; const [Ref] LocalClickPos: TPointF;
  const ItemObject: TListItemDrawable);
begin
  if(Assigned(ItemObject)) then
    lbDebug.Items.Add('Item '+ItemObject.ClassName + '='+ IntToStr(ItemIndex)+' '+FloatToStr(LocalClickPos.X) +' '+FloatToStr(LocalClickPos.Y) )
  else
    lbDebug.Items.Add('Sender '+Sender.ClassName + '='+ IntToStr(ItemIndex)+' '+FloatToStr(LocalClickPos.X) +' '+FloatToStr(LocalClickPos.Y) );
end;

DeddyH 25. Sep 2015 18:17

AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
 
Mit PtInRect würde ich ja zur Not auch arbeiten, aber woher bekomme ich das Rechteck des Image relativ zum ListViewItem?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:09 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