AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Automatische Anzeige der virt. Tastatur unterdrücken
Thema durchsuchen
Ansicht
Themen-Optionen

Automatische Anzeige der virt. Tastatur unterdrücken

Ein Thema von hotrs02 · begonnen am 25. Jul 2022 · letzter Beitrag vom 16. Aug 2022
Antwort Antwort
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#1

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 26. Jul 2022, 14:17
Hallo,

jetzt fällt es mir wieder ein. Als ich das brauchte war es bei mir aber andersrum. Die Tastatur ging bei einem Standard-Edit (bei XE8) nicht automatisch auf. Die Lösungen mit Nachrichten an die Tastaturapp schicken oder die Exe aufrufen fielen wegen undokumentiert aus. In irgendeinem Forum stieß ich auf das UIAtomation mit eine Beispielimplementierung für ein Edit. Damit ging bei mir dann die Tastatur automatisch auf.

Embarcadero hat in einer älteren Delphi Version an TWinControl die protected Eigenschaft

Delphi-Quellcode:
  TTipMode = (tipClose, tipOpen, tipDontCare);
  property TipMode: TTipMode read FTipMode write FTipMode default tipDontCare;
eingeführt. Standardmäßig steht diese auf tipDontCare, TEdit und TMemo z.B. setzen Sie auf tipOpen. Die Eigenschaft wird nicht veröffentlicht und ist nicht dokumentiert. Aus den Quellen lässt sich aber entnehmen, dass versucht wird, bei Erhalt des Fokus mittels ITextInputPanel Schnittstelle die virt. Tastatur einzublenden.
Da das bei mir im XE8 nicht funktioniert hat, kann es sein, dass das bei dir im Konflickt mit meiner Lösung steht. Versuche mal dies zu deaktivieren, so dass die Tastatur garnichtmehr automatisch aufgeht. Dann sollte sich die Tastatur wieder über das UIAtomation triggern lassen. Und dort lässt sich ja steuern ob die Tastatur aufgeht oder nicht.

Nach meiner Einschätzung ist die zukunftssichere und vom Microsoft verfolgte Variante das UIAtomation. Mir fehlt aber aktuell die Zeit mich damit zubeschäftigen. Sobalt ich etwas Luft habe (habe bald Urlaub), versuche ich da mal wieder weiterzumachen.
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#2

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 26. Jul 2022, 14:21
Aktuell (Delphi 11) scheint dieses Property garnichts zu machen,
denn siehe if Application.IsMetropolisUI and in meinem Post #12.

IsMetropolisUI scheint immer False zu sein. (nichts gefunden, was es aktiviert)
Aber man könnte mal versuchen beim Programmstart (also in der DPR, vor Erstellen der Form) das Application.UseMetropolisUI; aufzurufen und es so zu aktivieren.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (26. Jul 2022 um 14:23 Uhr)
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
41 Beiträge
 
#3

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 26. Jul 2022, 14:30
Da das bei mir im XE8 nicht funktioniert hat, kann es sein, dass das bei dir im Konflickt mit meiner Lösung steht. Versuche mal dies zu deaktivieren, so dass die Tastatur garnichtmehr automatisch aufgeht.
Wie himitsu richtig bemerkt, wird die Eigenschaft TipMode in aktuellen Delphi Versionen standardmäßig nicht ausgewertet, weswegen es nicht zu einer Beeinflussung kommen sollte. Ich hatte bei meinen Tests aber auch noch aus vorherigen Versuchen Code stehen, der TipMode auf tipDontCare setzt.


Dann sollte sich die Tastatur wieder über das UIAtomation triggern lassen. Und dort lässt sich ja steuern ob die Tastatur aufgeht oder nicht.
Hast du ggf. noch einen Tipp, welche Schnittstelle du genau dafür verwendet hast? Mittels IValueProvider.IsReadOnly habe ich es zumindest nicht geschafft, die virt. Tastatur zu unterdrücken. Allerdings möchte ich nicht ausschließen, dass mir dabei ein Fehler unterlaufen ist. Das UI Automation Framework ist doch recht komplex.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.038 Beiträge
 
Delphi 12 Athens
 
#4

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 26. Jul 2022, 18:28
Kann das nicht Auswerten/Funktionieren dieses Properties Mal jemand der sich damit auskennt im QP als Bug melden?
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
41 Beiträge
 
#5

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 27. Jul 2022, 09:06
Ich hatte in QP bereits einen Eintrag bzgl. der Veröffentlichung der Eigenschaft TipMode an TWinControl-Nachfahren wie TEdit und TMemo gemacht. Leider war ich da etwas vorschnell und habe erst später die in diesem Faden zusammengetragenen Unzulänglichkeiten herausgefunden. Ich habe den Eintrag gerade dementsprechend ergänzt.

Der Eintrag ist hier zu finden: https://quality.embarcadero.com/browse/RSP-38718
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#6

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 29. Jul 2022, 00:07
Hallo,

ich habe etwas Zeit gehabt selbst nochmal zu testen.

Als ich vor einigen Jahr für ein Kunden ein Modul für ein Windows 10 Handheld implementieren solte, ging die Bildschirmtastatur nicht automatisch auf. Dies hat sich geändet. In der gesammten Anwendung (auch die Module welche nicht für Touch entwickelt sind) geht die Bildschirmtastatur bei den Edits und Memos zu gefühlt 95% automatisch auf. Ich denke das ist das Problem. Lieder streickt aktuel das Remotdebuging.

Einzige Option die aktuell funktioniert ist das ReadOnly-Property. Das wird bei mir berücksichtigt.
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.342 Beiträge
 
Delphi 12 Athens
 
#7

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 29. Jul 2022, 02:10
Delphi XE und ohne daß irgendwas im Delphi/Programm aktiviert wurde:

Bei einem PC ohne Tastatur und mit Touch geht inzwischen die virtuelle Tastatur auf,
aber ich finde die "wichtige" Option im Windows nicht mehr.

Allerdings geht Sie (die angedockte Tablettastatur) immer erst beim zweiten Klick/Tippen ins Edit auf, was schon etwas blöd ist, wenn jemand nicht direkt weiß, dass es eine virtuelle Tastatur gibt.



Dagegen ist das "freifliegende" OSK schon bissl blöd, denn beim Verschieben der Tastatur bekommt sie den Fokus und man muß immer erst wieder ins Edit reinklicken, damit die Tastatur funktioniert.
Und da das Drecksding immer im Weg ist, muß man es ständig verschieben.

Außerdem, wer kommt bitte auf die saublöde Idee eine Tastenkombination für das Aufgehen der Virtuellen zu bauen ... wie soll man Die drücken, wenn es keine Tastatur gibt?
Da steht doch auch noch ganz fett "Gerät ohne physische Tastatur verwenden".
Siehe auch Win 8.1-Video https://support.microsoft.com/de-de/...BD=Windows_8.1

Windows 10 > Startmenü > Einstellungen (links das Zahnrad) > Erleichterte Bedienung > Tastatur (links unten, eventuell erst scrollen) > der oberste Schalter "Bildschirmtastatur verwenden"
> Dann geht die Tastatur als freifliegendes Fenster auf, was ständig im weg ist, wenn man mal oben und mal unten im Programm ein Eingabefeld hat.
> Der Schalter geht wieder aus, wenn man das Tastaturfenster schließt (nicht minimiert).

Das ist die selbe App, welche auch aufgeht, wenn man osk.exe startet, bzw. nach "Bildschirmtastatur" im Startmenü sucht.

osk.exe.png

Oben der fette schwarze Streifen, welcher sinnlos Platz verschwendet, das ist die "Textvorhersage", welche aber standardmäßig irgendwie nie etwas anzeigt. (kann man zum Glück in den Einstellungen ausblenden)

Außerdem verwenden wir im Programm viel die F-Tasten, welche aber in der Tablettastatur komplett fehlen
und die im freifliegenden OSK grundsätzlich ausgeblendet sind, also sich hinter den Zahlen verstecken (selbst wenn man die Zehnertastatur einblendet).




Zitat:
aber ich finde die wichtige Option im Windows nicht mehr.
Dann fand ich aber noch in irgendwo in einem Untermenü, fast ganz unten, eine Optionen, welche irgendwie sowas hieß wie "Tablettastatur auch im Desktop-Modus verwenden".

Genauso, wie bereits bei der Installation vom Windows, geht nun von alleine die Tastatur auf, wenn man in ein Edit klickt. (jetzt allerdings erst beim zweiten Klick ins Edit)
Diese Tastatur ploppt, von alleine im unteren Teil des Bildschirms, nach oben und verschiebt das Programm so, dass das Edit oben sichtbar bleibt (das Programm wird etwas verkleinert, in der Höhe)

Ja, es ist wirklich krank ... im Windows Setup wusste Windows noch, dass die Tastatur fehlt und machte dort die Virtuelle auf,
aber nach dem ersten Start war das wieder vergessen und man mußte erst selber rausfinden, wie man nun an eine Virtuelle ran kommt.
Und der Shortcut hilft da auch nicht wirklich.




Die Tablettastatur (vermutlich die TabTip.exe) bekommt man ebenfalls, wenn man im Kontextmenü der Uhr das "Bildschirmtastatur anzeigen (Schaltfläche)" aktiviert und dann auf den Knopf drückt.

Tablettastatur.jpg



Unter Windows 7 hatte man noch eine viruelle Tastatur, die flutschte zur Seite raus, man sie schoß, so als kurzer Streifen, über den man sie von links wieder in den Bildschirm aufziehen konnte (mit dem Finger vom Rand in den Bildschrirm rein wischen)



PS: ich weiß jetzt, warum manchme PCs einen USB-Port mit aufgedruckter Tastatur haben.
z.B. die kleinen Lenovo ThinkCentre, welche man hinter den Monitor schrauben kann.
-> mit Alt+P (oder war's Strg+P) kann man den Rechner dann anschalten (das BIOS UEFI reagiert dort darauf)

None_3c50e6d4-3f3d-4825-8393-965edb1931b7[1].jpg
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (29. Jul 2022 um 04:17 Uhr)
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
41 Beiträge
 
#8

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 29. Jul 2022, 08:19
Erstmal danke, dass du dir dafür die Zeit genommen hast.

Hallo,
Einzige Option die aktuell funktioniert ist das ReadOnly-Property. Das wird bei mir berücksichtigt.
Meinst du damit die Eigenschaft TEdit.ReadOnly oder IValueProvider.IsReadOnly?

TEdit.ReadOnly auf TRUE zu setzen bringt mich leider nicht weiter, da ich eine Eingabemöglichkeit benötige. Dann macht es ggf. mehr Sinn, ein eigenes Steuerelement zu entwickeln, welches das Verhalten von TEdit nachbildet.
  Mit Zitat antworten Zitat
einbeliebigername

Registriert seit: 24. Aug 2004
140 Beiträge
 
Delphi XE8 Professional
 
#9

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 29. Jul 2022, 09:10
Hallo,

Meinst du damit die Eigenschaft TEdit.ReadOnly oder IValueProvider.IsReadOnly?
Es ist TEdit.ReadOnly welche von Windows beachtet wird. Bei ReadOnly-Edits wird die Tastatur nicht geöffnet.

TEdit.ReadOnly auf TRUE zu setzen bringt mich leider nicht weiter, da ich eine Eingabemöglichkeit benötige.
Das verstehe ich jetzt nicht. Man kann bei einem Touch-Gerät doch nur mit der Bildschirmtastatur was eingeben. Bei separaten Buttons in der Obrfläche kann man ja an dem ReadOnly vorbei das Edit ändern.
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
41 Beiträge
 
#10

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 29. Jul 2022, 09:29
Unsere virt. Tastatur arbeitet momentan so, dass sie Tastendrücke mittels keybd_event simuliert. Für ein TEdit (und ein TMemo) mit der Eigenschaft ReadOnly = TRUE müsste man also anders vorgehen und das Eingabeverhalten nachbilden.

Dazu kommt, dass die Anwendung optional auch mit angeschlossener Tastatur bedient werden soll. Die Eigenschaft ReadOnly darf also nicht grundsätzlich auf TRUE gesetzt werden, sondern in Abhängigkeit einer angeschlossenen Tastatur im Desktop-Modus bzw. durch den Anwender konfigurierbar.

Aber du hast recht, beides sollte sich mit vertretbaren Aufwand umsetzen lassen.
  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 16:30 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