![]() |
FMX: ListviewItem bei OnTap
Hallo,
bisher habe ich die Listbox unter Android und Windows verwendet. Dort wurde vor dem OnItemClick, zuerst OnGesture ausgelöst, sodass ich bei einem LongTap ein Menü einblenden konnte. Jetzt nutze ich für eine andere App die Listview, da man diese besser anpassen kann. Hier habe ich das Problem, dass es hier umgekehrt ist: erst OnItemClick, dann OnGesture, sodass ich nicht auf LongTap reagieren kann. Also will ich jetzt OnTap verwenden, da dies nach LongTap ausgelöst wird, und unter Windows auf OnItemClick weiterleiten. Meine Frage: wie komme ich das selektierte ListItem? OnTap gibt mir als Parameter nur
Delphi-Quellcode:
const Point: TPointF
Ich bedanke mich schon einmal im Voraus für eine Hilfe. |
AW: FMX: ListviewItem bei OnTap
Delphi-Quellcode:
Füge das da ein wo Du es brauchst.
function GetSelectedIndex (LV: TListView): Integer;
begin Result := -1; if LV.Selected <> nil then Result := LV.Selected.Index; end; Wenn Result -1 dann war nichts selektiert. |
AW: FMX: ListviewItem bei OnTap
Delphi-Quellcode:
Oder benutze es so in Deinem Aufruf, wieder das gleiche, wenn Result -1 dann war nichts selektiert.
Function GetIndexAtPos (LV: TListView; TP: TPointF): Integer;
var I: Integer; TR: TRectF; begin Result := -1; for I := 0 to LV.Items.Count-1 do begin TR := LV.GetItemRect (I); if TR.Contains (TP) then begin Result := I; Break; end; end; end; (Funktion von Harry Stahl!) |
AW: FMX: ListviewItem bei OnTap
Ich sage erst einmal Danke für den Hinweis.:thumb:
ich werde es in Kürze einmal ausprobieren. |
AW: FMX: ListviewItem bei OnTap
Es sollte schon als Lösung funktionieren, sowie als auch, Du siehst ja was bei den Funktionen passiert, entweder als Selected abrufen oder als Positionsangabe, beides sollte für Single-Selections wunderbar funktionieren.
Gern geschehen und ein schönes Wochenende. |
AW: FMX: ListviewItem bei OnTap
Hallo, ja das hat funktioniert!
Nur bei der GetIndexAtPos() muss man noch die Größen der darüber platzierten Elemente beachten, sonst kommt es zu fehlerhaften Rückgaben.
Delphi-Quellcode:
function GetIndexAtPos (LV: TListView; TP: TPointF): Integer;
var I: Integer; TR: TRectF; HeightOfElementAbove : Single; begin HeightOfElementAbove := 0; if Element.Visible then HeightOfElementAbove := Element.Height; TP.Y := TP.Y - HeightOfElementAbove; Result := -1; for I := 0 to LV.Items.Count-1 do begin TR := LV.GetItemRect (I); if TR.Contains (TP) then begin Result := I; Break; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:56 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