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 Virtuelle Tastatur unterschiedliches Verhalten mit Maus oder Touchbedienung (https://www.delphipraxis.net/207276-virtuelle-tastatur-unterschiedliches-verhalten-mit-maus-oder-touchbedienung.html)

mateska 9. Mär 2021 12:22

Virtuelle Tastatur unterschiedliches Verhalten mit Maus oder Touchbedienung
 
Hallo,

wir haben eine VCL-Applikation, die entweder über Bildschirm + Tastatur + Maus bedient wird oder über einen Touch-Bildschirm.
Für die Touch-Bedienung wird die virtuelle Tastatur TTouchKeyboard bei Bedarf eingeblendet.
Diese Tastaur verhält sich, wie eine physikalisch Tastatur, wenn die Tasten mit der Maus angeklickt werden. Wenn die Tasten mit dem Finger berührt werden, verhalten sich alle Tasten mit Ausnahme der TAB-Taste genauso. Bei der TAB-Taste ist das anders. Hier passiert bei einer einfachen Berührung nichts, bei einer Doppelberührung (wie Doppelklick bei der Maus) verhält sie sich so wie bei einem Mausklick, d.h. der Focus springt ein Feld weiter (gewünschtes Verhalten).
Die virtuelle Windows 10 Systemtastatur verhält sich bei Mausklick und bei Fingerberührung gleich.
Hat jemand eine Idee?

KodeZwerg 10. Mär 2021 07:13

AW: Virtuelle Tastatur unterschiedliches Verhalten mit Maus oder Touchbedienung
 
Meine Idee wäre es die Frage zu einer Frage umzuformulieren.
Oder mit anderen Worten, worauf willst Du hinaus?
Was funktioniert nicht, was hast Du probiert, wie hast Du probiert usw usf....

mateska 10. Mär 2021 14:03

AW: Virtuelle Tastatur unterschiedliches Verhalten mit Maus oder Touchbedienung
 
Ich möchte gerne, dass sich das TTouchKeyboard bzgl. der TAB-Taste so verhält, dass das Weiterschalten des Focus der Steuerelement auch bei einer einfachen Fingerberührung funktioniert. Anderenfalls ist ein Shift-Tab zum Rückwärtsbewegen des Focus nicht möglich, da das Shift bei der ersten Berührung der TAB-Taste wieder aufgehoben wird (wie bei den andern Tasten auch).
Beim Klicken mit der Maus auf die Tab-Taste funktioniert es wie gewünscht.
Standardmäßig arbeiten wir mit Delphi XE5. Probehalber habe ich es mit dem Rad-Studio 10.2 versucht, mit dem gleichen unbefriedigenden Ergebnis. Wir haben sowohl ein selbsdefiniertes Layout benutzt als auch das zu Delphi gehörende Standard-Layout, immer mit dem gleichen Ergebnis.

himitsu 10. Mär 2021 14:38

AW: Virtuelle Tastatur unterschiedliches Verhalten mit Maus oder Touchbedienung
 
Dann geht die Tastatur nicht richtig,
oder sie ist falsch konfiguriert.

Die Strg/Alt/Shift bleiben beim Antippen so lange aktiv, bis eine Taste gegrückt wird.
Diese Tasten werden nur direkt beim Loslassen wieder inaktiv, wenn man zwischendrin eine Taste gerückt hat.
> Strg drücken, andere Taste drücken und loslassen, Strg loslassen
> Strg drücken+loslassen, andere Taste drücken+loslassen



Nur das TTouchKeyboard der VCL hat einen Bug, wo wenn man Strg+Shift+Alt gleichzeitig aktiviert hat, dann bleibt die zuerst gegrückte ControlTaste weiterhin aktiv, nachdem der Buchstabe gedrückt wurde.

Der schöne Günther 10. Mär 2021 17:40

AW: Virtuelle Tastatur unterschiedliches Verhalten mit Maus oder Touchbedienung
 
(bitte ignorieren)

KodeZwerg 10. Mär 2021 18:05

AW: Virtuelle Tastatur unterschiedliches Verhalten mit Maus oder Touchbedienung
 
Ich habe mir gerade mal die Beschreibung durchgelesen.
Zitat:

The TTouchKeyboard works like a normal keyboard but the difference resides in the modifier keys. The modifier keys Shift and Fn can be toggled rather than just be touched and held. For example, when Shift is touched once, it is toggled on and the letter keys change the caption to their uppercase equivalent. Once the user touches one of the letter keys, the Shift key is toggled off and the lettered keys resume their normal caption.
Da könnte man auf die schnelle einen Timer basteln der anspringt wenn was bestimmtes einen focus bekommt, letzten status von steuerungstasten merken und abfragen ob sich was geändert hat solange focusiert und nicht return-taste, alle tastenanschläge weiterleiten mit den original gemerkten steuerungstasten.
Ist das nachvollziehbar was ich meine?

//edit proto-code
1. onTimer aktivieren wenn editX focus erhält
2. onKeyInput über timer aktivieren um keyboard abzufangen
3. leiteWeiter(buchstabe:char; ctrl:boolean; shift:boolean; alt:boolean) o.ä. basteln die den puffer an EditX weiterleitet
4. timer ausschalten wenn focus verloren geht, der onKey mit abschaltet


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