Delphi-PRAXiS

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 Gestures für Windows (https://www.delphipraxis.net/216292-gestures-fuer-windows.html)

Alex_ITA01 5. Dez 2024 11:35

Gestures für Windows
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich habe eine Frage zu den Gestures.
Meine Anwendung besteht aus einem TPanel (alClient).
Darauf liegt eine TScrollbox (alClient).
In der Scrollbox sind ein paar Buttons, die soweit außerhalb des sichtbaren Bereiches liegen, dass die vertikale Scrollbar angezeigt wird.
Anwendung unter Windows starten und mit Mausrad in der Scrollbox scrollen -> funktioniert.
Ich habe einen Touchbildschirm und wollte jetzt mit zwei Fingern hoch und runter schwenken aber leider bekomme ich das nicht hin, dass mit dem Fingern das scrollen auch ausgelöst wird.
Gibt es da noch einen Trick?
Ich habe bei den Gestures nichts geändert gegenüber den Default Einstellungen

Der schöne Günther 5. Dez 2024 11:53

AW: Gestures für Windows
 
Vorsicht bei den Begriffen. Die Gestures und der TGestureManager (den du laut Bild nicht zugewiesen hast) sind für etwas anderes.

"Gestures" sind für "Ich male etwas auf den Bildschirm und danach wird einmalig etwas ausgelöst". Beispielsweise ein Dreieck, oder eine Linie von rechts nach links oder was auch immer. Damit kannst du kein "Ich scrolle mit dem Finger mit" oder "Ich zoome mit zwei Fingern" realisieren.

Normal funktioniert das, ohne dass man etwas einstellen muss. Hast du auch wirklich einen richtigen Touchscreen? Also malt Windows z.B. keinen klassischen Mauszeiger, sondern nur so kleine Punkte? Und kannst du in anderen Anwendungen, z.B. Notepad oder einem Internet-Browser mit dem Finger normal scrollen?

Alex_ITA01 5. Dez 2024 12:25

AW: Gestures für Windows
 
Danke für den Tip, dass wusste ich nicht.

Stimmt, es ist einfach ein Bildschirm über HDMI angeschlossen, der Touch hat.
Also Browser und Editor lassen sich auch nicht scrollen.
Bekommt man das aber irgendwie hin, wenn das explizit programmiert/einstellt?
Würde gerne die Scrollbar mit zwei Fingern scrollen wenn ich die Finger in der Komponente "ziehen"

Der schöne Günther 5. Dez 2024 12:59

AW: Gestures für Windows
 
Ja HDMI allein ist ein bisschen wenig. Der wird doch wohl noch zumindest ein USB-Kabel haben?

Daneben gibt es, je nach Modell, teilweise verschiedene Treiber/Konfigurations-Tools, wo einstellbar ist, wie sich das Ding verhalten soll. Soll es so tun, als sei es eine Maus? Oder soll es sich verhalten wie ein "echter Touch"?

Alex_ITA01 5. Dez 2024 13:10

AW: Gestures für Windows
 
Ja hast Recht, USB hat er auch wegen der Rückmeldung des Touchs.
Also mir selber würde es reichen, wenn er sich wie eine Maus verhält und ich mit der Maus auch hoch/runter ziehen/schieben kann und die Scrollbar eben mitwandert.

Habe jetzt ein GestureManager drauf gelegt und bei der Scrollbox verknüpft.

Delphi-Quellcode:
  case EventInfo.GestureID of
    sgiUp :
      begin
        ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position + EventInfo.Distance;
      end;

    sgiDown :
      begin
        ScrollBox1.VertScrollBar.Position := ScrollBox1.VertScrollBar.Position - EventInfo.Distance;
      end;
  end;

  Handled := True;
Leider ist die EventInfo immer nur das Feld Location (X/Y) gefüllt und zwar mit dem Wert, wo man zuerst geklickt hat und den "Zieh/Schiebevorgang" gestartet hat. Würde ja gerne entsprechend der Länge des "Wischens" auch die Scrollbox scrollen

Der schöne Günther 5. Dez 2024 13:29

AW: Gestures für Windows
 
Ich glaube, dein erstes Problem ist doch, dass Ding überhaupt anzuschließen und zu schauen wie es sich verhält:
  1. Als Maus-Emulation
  2. Als Touch

Das entscheidet dann auch, ob du dir über überhaupt einen GestureManager etwas hinmurksen musst, vielleicht lieber einfach doch ▲ und ▼ Buttons über- und unterhalb deine Scrollbox packst oder ob du einfach Windows easy selbst darin scrollen lassen kannst.

jaenicke 5. Dez 2024 13:32

AW: Gestures für Windows
 
Die Frage ist, ob der Touchscreen echten Touch kann oder lediglich eine Maus emuliert. Das sollte in dessen Unterlagen stehen.

Du kannst dich mit RegisterTouchWindow für Touchnachrichten registrieren. Du solltest mit Tools wie dem Window Detective prüfen, was da für Nachrichten ankommen.

Der schöne Günther 5. Dez 2024 13:42

AW: Gestures für Windows
 
Das sieht man ja eigentlich schon, wenn man nur mal irgendwo auf den Bildschirm tappt, muss man sich keine Software für schreiben:

Maus ist ... wie Maus. Offensichtlich.

Ist es wie Touch, bleibt kein Mauszeiger dort stehen wo man hingetippt hat, sondern nur so ein kleiner Kreis, der schnell wieder verschwindet. Auch kann man z.B. in einem Webbrowser oder Notepad oder anderen Programmen ganz normal scrollen.

jaenicke 5. Dez 2024 15:01

AW: Gestures für Windows
 
Ganz so einfach ist es nicht. Es gibt auch Monitore bzw. Treiber, die sich wie eine Maus verhalten, aber visuell wie Touch aussehen. Ich habe 11 Jahre lang für solche Systeme entwickelt. Da gibt es so viele Varianten...

himitsu 5. Dez 2024 15:12

AW: Gestures für Windows
 
Ja, die ganz Billigen/Einfachen, emulieren gern einfach nur eine Maus.

Aber viele verhalten sich so oder so
* Tippst du auf eine Fläche, welche sich als Touch registriert hat (RegisterTouchWindow), dann wird es Touch,
* und bei anderen Flächen verhält es sich wie eine Maus.

Zitat:

Leider ist die EventInfo immer nur das Feld Location (X/Y) gefüllt und zwar mit dem Wert
Es waren im TouchManager aber auch ein paar Gesten eingerichtet, bzw. Standardgesten aktiviert?

Der schöne Günther 5. Dez 2024 16:16

AW: Gestures für Windows
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier einfach ein paar Buttons in eine Scrollbox geworfen.

Delphi-Quellcode:
program Project1;

uses
   System.SysUtils,
   Vcl.Forms,
   Vcl.Controls,
   Vcl.WinXPanels,
   Vcl.StdCtrls;

begin
   const form = TForm.Create(nil);

   const scrollBox = TScrollBox.Create(form);
   scrollBox.Parent := form;
   scrollBox.Align := TAlign.alClient;

   for var buttonIndex := 0 to Pred(100) do
      begin
         const button = TButton.Create(scrollBox);
         button.Caption := buttonIndex.ToString();
         button.Name := 'button' + button.Caption;
         button.Parent := scrollBox;
         button.Left := 10;
         button.Top := 10 + buttonIndex * 32;

         scrollBox.InsertControl(button);
      end;

   form.ShowModal();
end.
Und hier, wie das ganze als Video aussehen sollte:
Anhang 57271
https://imgur.com/a/G8BadjN

himitsu 5. Dez 2024 16:26

AW: Gestures für Windows
 
Windows 11: [Druck] drücken und auf Video umstellen :duck:

Der schöne Günther 5. Dez 2024 20:26

AW: Gestures für Windows
 
Ich weiß nicht, was man dann großartig auf so einem Video hätte sehen können.

Es ging ja im Endeffekt um den Finger auf dem Touchscreen, der das hin- und her schiebt. Wenn Windows das mit aufnehmen kann bin ich echt baff 🐸

Alex_ITA01 6. Dez 2024 08:00

AW: Gestures für Windows
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe das Beispiel aus dem Video oben getestet, da geht weder das Mausrad zum scrollen noch auf dem Maus-emulierten-Touch-Bildschirm das wischen.
Also scrollen nur möglich durch ziehen und klicken auf der Scrollbar selber.
Anbei mein eigener Test, vielleicht habt ihr ja noch eine Idee. Mir wäre ja das Wischen mit der Maus Recht.

Alex_ITA01 9. Dez 2024 08:08

AW: Gestures für Windows
 
hat jemand eine Idee dazu ^^?

Der schöne Günther 9. Dez 2024 08:11

AW: Gestures für Windows
 
Zitat:

Zitat von Alex_ITA01 (Beitrag 1543917)
Also Browser und Editor lassen sich auch nicht scrollen.
Bekommt man das aber irgendwie hin, wenn das explizit programmiert/einstellt?
Würde gerne die Scrollbar mit zwei Fingern scrollen wenn ich die Finger in der Komponente "ziehen"

Wir hängen immer noch hier, oder? Es ist kein Touchbildschirm (oder du hast das Kabel immer noch nicht eingesteckt) und du suchst eine Möglichkeit, einen Touchbildschirm komplett nachzuprogrammieren?

Alex_ITA01 9. Dez 2024 09:30

AW: Gestures für Windows
 
Also, es ist ein Touchbildschirm, der sich aber nur wie eine Mausemulation verhält. Daher bekomme ich das mit dem Touch und Gesten nicht hin wie ich dich verstanden habe.
Was ich jetzt gerne möchte, ist einfach auf meinem normalen Bildschirm vom Laptop mit der Maus das ziehen nach oben und unten innerhalb der Scrollbox (nicht auf der Scrollbar!), dass die eingestellten Gesten ausgeführt werden. Das macht er ja auch mit dem Beispiel oben allerdings würde ich gerne die Scrollbox soweit automatisch scrollen, wie ich mit der Maus das nach oben/unten ziehen durchgeführt habe aber das Feld Location gibt immer nur die Quellkoordinaten an und es gibt keine Zielkoordinaten womit man eine Differenz ausrechnen könnte und mit dieser Differenz die Scrollbox "nachscrollt".
Soweit verstanden was ich meine?
Wenn ich dieses Verhalten ordentlich programmiert/eingestellt bekomme auf einem normalen Laptop-Bildschirm, würde mir das für meinen externen Maus-emulierten-Touchbildschirm reichen.

himitsu 9. Dez 2024 09:40

AW: Gestures für Windows
 
OnMouseDown
* Startpunkt merken

OnMouseMove
* entsprechend zum Start, bzw. letztem Move verschieben
* wenn weit genug am Rand (oben/unten), den Timer aktivieren

TTimer
* weiterverschieben

OnMouseUp
* aufhören

Alex_ITA01 9. Dez 2024 10:00

AW: Gestures für Windows
 
Danke Himitsu, darum ging es aber nicht.
Ich wollte ja gerne mit den Gesten arbeiten und damit probieren.
Deine Lösung geht natürlich auch, war aber nicht meine Frage ;-)
Es sei denn, jemand sagt mir jetzt, es geht mit Gesten nicht und es gibt nur deine Lösung. Dann akzeptiere ich das auch aber wollte wie gesagt gerne mich in die Gesten einarbeiten

Der schöne Günther 9. Dez 2024 11:06

AW: Gestures für Windows
 
Die Gesten werden dir nicht helfen, etwas wie Scrollen oder Zoomen zu emulieren. Die triggern erst, wenn du "fertig" gemalt hast, und dann passiert etwas.

Kein Mensch wird akzeptieren, erst mit dem Finger von unten nach oben zu streichen, und dann erst schiebt sich mit einem großen Sprung der Bildschirminhalt sobald jemand den Finger vom Glas nimmt.

Mach über und unter deine Scrollbox notfalls zwei Buttons zum Hoch ▲ und Runterscrollen ▼, das versteht jeder.


Oder du hast die Zeit und bastelst dir selbst einen Scrollmechanismus mit OnMouseDown, OnMouseMove, OnMouseUp und alldem.

Alex_ITA01 9. Dez 2024 11:22

AW: Gestures für Windows
 
Zitat:

Die Gesten werden dir nicht helfen, etwas wie Scrollen oder Zoomen zu emulieren. Die triggern erst, wenn du "fertig" gemalt hast, und dann passiert etwas.
Wenn das wirklich so ist, dann ist es natürlich nicht zu gebrauchen. Ich dachte, es gibt eine Möglichkeit, dass es "live" mit scrollt via Gesten.
Schade aber danke für deine Bemühungen

Der schöne Günther 9. Dez 2024 11:44

AW: Gestures für Windows
 
An deiner Stelle würde ich noch einmal schauen, ob es wirklich keinen besseren Treiber oder ggf. ein Einstellungs-Tool vom Hersteller gibt, dass sich der Bildschirm auch als "richtiger" Touch einbinden kann, statt so einer ärmlichen Mausemulation.

Sherlock 10. Dez 2024 10:51

AW: Gestures für Windows
 
"Richtiger Touch" bedeutet mehrere Finger gleichzeitig bemerken und verarbeiten. Das ist Grundvoraussetzung, die bei "billigen" Umsetzungen von Touch-Displays einfach nicht gegeben sind.

himitsu 10. Dez 2024 14:13

AW: Gestures für Windows
 
Zitat:

Zitat von Sherlock (Beitrag 1544074)
"Richtiger Touch" bedeutet mehrere Finger gleichzeitig bemerken und verarbeiten.

nnnnnjaaaain
Das ist MultiTouch.

z.B. der Unterschied Windows 7 und Windows 10 ... Ersteres konnte nur einen Finger.
Ebenso die rezessiven Touchscreens, welche es z.B. auch immernoch für den Raspberry gibt, zum Aufstecken.

Der schöne Günther 10. Dez 2024 15:13

AW: Gestures für Windows
 
Wie der Bildschirm das "Signal" einliest (kapazitiv, resistiv, optisch, akustisch, ...) ist im Endeffekt irrelevant.

Es gibt genauso billige resistive Touchscreen mit nur einem Finger die sich als richtige Touchscreen in Windows melden, und nicht als Maus.

Es geht darum, ob das Gerät über seinen USB-Stecker sagt "Hallo, ich bin eine Computermaus" oder ob der sagt "Hallo, ich bin ein Stift" oder "Touchscreen" oder was auch immer.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:27 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