AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls VCL OnGesture/GestureManager: immer "eins hinterher"?
Thema durchsuchen
Ansicht
Themen-Optionen

VCL OnGesture/GestureManager: immer "eins hinterher"?

Ein Thema von Bbommel · begonnen am 23. Sep 2019 · letzter Beitrag vom 25. Sep 2019
Antwort Antwort
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#1

VCL OnGesture/GestureManager: immer "eins hinterher"?

  Alt 23. Sep 2019, 12:24
Eigentlich wollte ich für einen Freund nur "mal schnell" ein kleines Programm schreiben, mit dem er beim Sport den Spielstand anzeigen lassen kann. Wunsch dabei war, dass man mit Touch-Gesten dem Heim- oder Gast-Team einen Punkt geben (oder abziehen) kann. "Sache von 'ner Stunde", habe ich mir gedacht. Aber denkste - entweder bin ich zu blöd, die Touch-Funktionen von Delphi richtig zu nutzen oder da steckt ein fieser Bug drin.

Idee war: wischt man in der linken Bildschirmhälfte mit einem Finger nach oben, bekommt die Heimmannschaft einen Punkt, in der rechten Hälfte nach oben wischen führt zu einem Punkt für die Gäste. Analog wird bei einem Wisch nach unten ein Punkt abgezogen. Problem: im fertigen Programm wische ich links, dennoch bekommt der Gast einen Punkt. Wische ich dann noch mal links, bekommt (wie erwartet) die Heimmannschaft einen Punkt, noch mal links, wieder Heim. Wische ich dann rechts, bekommt wieder die Heimmannschaft den Punkt, soll sie aber natürlich nicht. Nochmal rechts, dann erst geht der Punkt an den Gast.

Der Fehler tritt sowohl auf, wenn man die Geste für das Form als Ganzes auswertet (und dann an der x-Position entscheidet, ob links oder rechts), als auch, wenn man mit zwei Labels arbeitet und diesen getrennt ein OnGesture zuweist - es wird dann das Event für das jeweilige Label immer um eins versetzt ausgeführt.

Im Anhang findet ihr ein einfaches Demoprogramm, das einfach nur die x-Position ausgibt, wenn man auf dem Formular mit dem Finger nach oben oder unten wischt. Man sieht, dass die Position immer eins hinterher ist.

Getestet sowohl mit Delphi 10.2.3 als auch 10.3.2 auf einem Surface mit Windows 10 (ohne VM). Könnt ihr das bei euch nachvollziehen? Mache ich etwas falsch oder ist es ein Bug in der VCL?

Ach, wichtig noch: der Fehler tritt nicht auf, wenn man die Geste mit der Maus emuliert, dann ist alles korrekt. Nur, wenn man wirklich mit dem Finger die Geste ausführt, zeigt sich der Effekt.
Angehängte Dateien
Dateityp: zip touchtest.zip (5,0 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: VCL OnGesture/GestureManager: immer "eins hinterher"?

  Alt 23. Sep 2019, 12:31
Kannst du das kompilierte Programm auch hochladen?
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#3

AW: VCL OnGesture/GestureManager: immer "eins hinterher"?

  Alt 23. Sep 2019, 12:39
Klar, wenn es hilft, rauszufinden, ob es an meinem Surface liegt oder allgemein auftritt. Ist im Anhang dieses Beitrags.
Angehängte Dateien
Dateityp: zip touchtest_exe.zip (3,51 MB, 8x aufgerufen)
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#4

AW: VCL OnGesture/GestureManager: immer "eins hinterher"?

  Alt 24. Sep 2019, 10:39
Hallo zusammen,

offenbar haben jetzt nicht sooooo viele Efahrung mit Gesten bei der VCL. Insofern könnte es ja tatsächlich sein, dass dort ein Fehler schlummert, den einfach länger niemand bemerkt hat. Bevor ich da aber bei QC ein Ticket aufmache, fände ich es klasse, wenn ich wüsste, ob es tatsächlich nicht an meinem Rechner liegt. Insofern könntet ihr mir einen großen Gefallen tun, wenn ihr einen Windows-Rechner mit Touchscreen habt und mal kurz die Anwendung testen könntet und schaut, ob ihr immer passende X-Werte angezeigt bekommt oder eben auch "eins hinterher". Ihr könnt dazu entwder das Delphi-Projekt nutzen oder die fertige Exe, wenn ihr da keine Sorgen habt.

Danke fürs kurze Testen!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: VCL OnGesture/GestureManager: immer "eins hinterher"?

  Alt 24. Sep 2019, 11:57
Ich wollte es gestern abend probieren, habe es aber nicht geschafft. Ich versuche es heute nochmal, auf zwei Geräten. Geduld 😓
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: VCL OnGesture/GestureManager: immer "eins hinterher"?

  Alt 25. Sep 2019, 15:01
ich habe gerade einmal die .exe ausprobiert, weiß aber nicht was ich eigentlich erwarten soll - Da ist ein Label1 und egal ob ich links, oben, unten oder in der Mitte wische -(egal in welche Richtung) scheint in das Label1 eine Zufallszahl geschrieben zu werden. Manchmal 140, manchmal 2200, meist aber nur kleine Änderungen. Was übersehe ich?
  Mit Zitat antworten Zitat
Bbommel

Registriert seit: 27. Jun 2007
Ort: Köln
655 Beiträge
 
Delphi 12 Athens
 
#7

AW: VCL OnGesture/GestureManager: immer "eins hinterher"?

  Alt 25. Sep 2019, 15:12
Im Label sollte nach einem Wischen nach oben oder unten eigentlich die x-Position stehen, an der du das ausgeführt hast. Das heißt, wenn du am linken Rand des Fensters wuschst, dann sollte da eher so etwas unter 100 stehen, wenn du am rechten Rand wischst (je nachdem wie groß du das Fenster gemacht hast), dann eher ein großer dreistelliger bis vierstelliger Wert.

Wenn dir die Ergebnisse eher zufällig vorkommen, dann spricht das schon eher für den von mir vermuteten Fehler.

Danke fürs Testen!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.158 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: VCL OnGesture/GestureManager: immer "eins hinterher"?

  Alt 25. Sep 2019, 16:01
Oh, dass das X-Koordinaten sind war mir nicht klar. Das würde wohl hinkommen. Ich konnte auch nicht feststellen dass er "eins hinterher" wäre. Diese VCL-Komponenten triggern ihr Event erst wenn man den Finger von Glas nimmt / Maustaste loslässt / Stift anhebt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 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