Delphi-PRAXiS
Seite 1 von 2  1 2      

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 mit on Click und LongTap (https://www.delphipraxis.net/213340-listview-mit-click-und-longtap.html)

fisipjm 13. Jul 2023 06:56

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

Olli73 13. Jul 2023 10:51

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;

fisipjm 13. Jul 2023 11:36

AW: Listview mit on Click und LongTap
 
Zitat:

Zitat von Olli73 (Beitrag 1524508)
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;

Aus meiner Sicht völlig falscher Ansatz. Habs trotzdem versucht. Funktioniert leider nicht. Es gibt ein Ereignis
Delphi-Quellcode:
OnGesture
das für das Abfragen von allen möglichen Gesten zuständig ist. Da kann ich auch ein
Delphi-Quellcode:
EventInfo.GestureID = igiLongTap
abfragen.
Funktioniert genau so lange gut, bis ich das
Delphi-Quellcode:
OnItemClickEx
definiere. Das greift schon beim Tap und nicht erst beim Tap Ende und sperrt mir somit die
Delphi-Quellcode:
EventInfo.GestureID = igiLongTap
Abfrage.

Olli73 13. Jul 2023 11:52

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...

fisipjm 13. Jul 2023 12:31

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:
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;
Ich bekomme ausschließlich das "Click" nie "Long".

shebang 13. Jul 2023 12:34

AW: Listview mit on Click und LongTap
 
Hilft dir dieser Link eventuell weiter?

fisipjm 13. Jul 2023 12:50

AW: Listview mit on Click und LongTap
 
Zitat:

Zitat von shebang (Beitrag 1524518)
Hilft dir dieser Link eventuell weiter?

Nein, LongTap ist aktiv.

!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.

Olli73 13. Jul 2023 13:06

AW: Listview mit on Click und LongTap
 
Oder war das mit dem right click nur unter Windows? :gruebel:

himitsu 13. Jul 2023 16:30

AW: Listview mit on Click und LongTap
 
Zitat:

Zitat von Olli73 (Beitrag 1524513)
Ein long tap auf einem Touchscreen kommt dann im Programm immer als Rechtsclick an...

Nee, es kommt drauf an, wie es dort arbeitet.

Genauso könnte z.B. auch ein Zwei- oder Drei-Finger-Tipper als Rechtsklick (ContextMenü) interpretiert werden.

Rollo62 13. Jul 2023 16:38

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:51 Uhr.
Seite 1 von 2  1 2      

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