![]() |
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:
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?
procedure TfrmMain.lvRunningItemClickEx(const Sender: TObject;
ItemIndex: Integer; const LocalClickPos: TPointF; const ItemObject: TListItemObject); begin if ItemObject is TListItemImage then //Bildchen geklickt end; P.S.: XE8 aktuell |
AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
Wo kommt denn das Item her?
|
AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
Sry, das sollte ItemObject heißen, korrigiert.
|
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:
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.
ItemClickEx(const Sender: TObject;
ItemIndex: Integer; const [Ref] LocalClickPos: TPointF; const ItemObject: TListItemDrawable); |
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 ;)
|
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?
|
AW: TListViewItem mit Custom Appearance... wo wurde hingeklickt?
Diese Objekte verfügen über keine Margins-Eigenschaft :(
|
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; |
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:16 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