![]() |
Listview mit on Click und LongTap
Hi,
ich schlage mich jetzt schon seit einiger zeit mit der Listview herum und bekomme einen, meiner auffassung nach, selbstverständlichen use case nicht abgebildet. Es geht bei der Entwicklung ausschließlich um Mobile also android oder iOS Ich möchte in der Listview sowohl mit einem einfachen tab auf das Item eine aktion ausführen (Öffnen des Datensatzes in neuer Form) sowie auch durch gedrückt halten, die Listview in den Editmodus umschalten. Beides getrennt, kein Problem, beides Zusammen bekomme ich einfach nicht hin. Die beiden aktionen kommen sich immer gegenseitig in die Quere. Hat das schon jemand von euch implementieren können? Viele Güße PJM |
AW: Listview mit on Click und LongTap
So vielleicht?
Delphi-Quellcode:
procedure TForm1.ListViewMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin if Button = TMouseButton.mbRight then //LongPress else //Tap/Click; end; |
AW: Listview mit on Click und LongTap
Zitat:
Delphi-Quellcode:
das für das Abfragen von allen möglichen Gesten zuständig ist. Da kann ich auch ein
OnGesture
Delphi-Quellcode:
abfragen.
EventInfo.GestureID = igiLongTap
Funktioniert genau so lange gut, bis ich das
Delphi-Quellcode:
definiere. Das greift schon beim Tap und nicht erst beim Tap Ende und sperrt mir somit die
OnItemClickEx
Delphi-Quellcode:
Abfrage.
EventInfo.GestureID = igiLongTap
|
AW: Listview mit on Click und LongTap
Die Gesten etc. musst du natürlich rausnehmen für meinen Ansatz, falls nicht geschehen.
Ein long tap auf einem Touchscreen kommt dann im Programm immer als Rechtsclick an... |
AW: Listview mit on Click und LongTap
Test es gerade mit Delphi 11.3 alle anderen Events sind von der Listview entfernt.
Folgender Code liegt auf MousUp
Delphi-Quellcode:
Ich bekomme ausschließlich das "Click" nie "Long".
procedure TForm1.ListViewOverviewMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single);
begin if Button = TMouseButton.mbRight then showmessage('Long') // LongPress else showmessage('Click'); end; |
AW: Listview mit on Click und LongTap
Hilft dir dieser
![]() |
AW: Listview mit on Click und LongTap
Zitat:
!OffTopic! PressAndTap ist die unnötigste Geste von der ich jemals gehört habe. Nicht nur das ich das noch nie gesehen habe, mir fällt auch kein auch noch so konstruiertes Beispiel ein an dem die Geste hilfrecih wäre. |
AW: Listview mit on Click und LongTap
Oder war das mit dem right click nur unter Windows? :gruebel:
|
AW: Listview mit on Click und LongTap
Zitat:
Genauso könnte z.B. auch ein Zwei- oder Drei-Finger-Tipper als Rechtsklick (ContextMenü) interpretiert werden. |
AW: Listview mit on Click und LongTap
Ich habe da auch viel rumexperimentiert und verschiedene Ansätze dafür.
Mittlerweile mache ich das mit einem FTDateTimeStart := Now; im Mousedown und mit MillisecondsBetween( Now, FTDateTimeStart ) > 2000 then Im MouseUp. Sorry, bin nicht am PC, kannst nicht schöner schreiben. Das Problem kann sein dass ein LongTap auch immer ein OnClick auslöst, Das kam man damit entsprechend verhindern. Der Nachteil ist, dass ein Event erst bei MouseUp ausgelöst wird. |
AW: Listview mit on Click und LongTap
OnMouseUp ist ja OK, da man ja erst beim Loslassen wissen kann, ob es kurz oder lang war.
Wo man etwas aufpassen muß, ist wann "Clicks" ausgelöst werden. z.B. * Leertaste oder Buchstabe/ShortCut auf Button -> KeyDown = Click * Enter auf Button -> oftmals KeyUp = Click * linke Maustaste auf Button -> MouseUp = Click * linke Maustaste auf Button und Move außerhalb des Buttons -> MouseUp = kein Click * und ansonsten reagieren verschiedene Komponenten gern unterschiedlich, also manchmal Aktion beim Down oder beim Up Ich hatte mal den Fall, dass beim KeyUp (F2) ein Fenster auf ging und dieses Fenster ebenfalls auf F2 reagierte, aber im KeyDown, um es mit der "Standard-Aktion" wieder zu schließen. Geplant war also "zwei Mal die F2-Taste drücken (und loslassen) für Schnellauswahl" * erstes Drücken+Loslassen des F2 = Auswahlfenster auf * zweites Drücken+Loslassen des F2 = Fenster zu, aber sofort wieder auf, weil siehe "erstes Drücken+Loslassen" ... und nun die Endlosschleife |
AW: Listview mit on Click und LongTap
Liste der Anhänge anzeigen (Anzahl: 1)
Okay,
ich habe eine Lösung, aber diese Lösung ist so unverhältnismäßig kompliziert, dass ich irgendwie hoffe einfach nur die Komponente nicht richtig verstanden zu haben. Anbei mein Beispiel. Wer Lust hat sich das zu gemüte zu führen kann das gern machen :-) Wie ich das umsetzen kann, wenn die listview im edit mode nicht auf der vorgefertigten Checkbox aufbaut ist, sondern auf einem DynamicAppearance weis ich leider immer noch nicht. Bekomme das selbst platzierten glyphButton nicht angehakt wenn ich drauf drücke :?:roll: |
AW: Listview mit on Click und LongTap
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 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