![]() |
Automatische Anzeige der virt. Tastatur unterdrücken
Hi *.*.
Wir haben eine Delphi 11 VCL Applikation, die auf einem Tablet-PC mit aktuellem Windows 10 / 11 ohne angeschlossene Tastatur läuft. Für Eingaben verlassen wir uns in der Regel auf die automatisch angezeigte virt. Tastatur. Allerdings haben wir verschiedene Dialoge, die eine eigene, permanent sichtbare und mit speziellen Knöpfen ausgestattete virt. Tastatur anzeigen. Für diese Dialoge möchten wir nun die automatische Anzeige der virt. Tastatur bei Anwahl einer TEdit-Instanz per Touch unterbinden. Ich bin dabei auf das Interface ITextInputPanel gestoßen, was aber nicht wie gewünscht funktioniert. Eine einfache Testanwendung mit einem Knopf und einem Eingabefeld macht beim Drücken des Knopfes folgendes:
Delphi-Quellcode:
Trotzdem wird danach bei Anwahl des Eingabefeldes automatisch die virt. Tastatur von Windows aufgerufen.
type
tEditHack = class(tEdit); procedure TForm1.Button2Click(Sender: TObject); var TIP: IUnknown; Value: Integer; begin tEditHack(Edit1).TipMode := tipDontCare; // autom. Anzeige der Tastatur durch die VCL unterdrücken! TIP := nil; if Succeeded(CoCreateInstance(CLASS_TextInputPanel, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IUnknown, TIP)) then if Succeeded((TIP as ITextInputPanel).Set_AttachedEditWindow(Edit1.Handle)) then if Succeeded((TIP as ITextInputPanel).Set_InPlaceVisibleOnFocus(Integer(False))) then begin (TIP as ITextInputPanel).Get_InPlaceVisibleOnFocus(Value); if Bool(Value) then ShowMessage('Get_InPlaceVisibleOnFocus: TRUE') else ShowMessage('Get_InPlaceVisibleOnFocus: FALSE') end else ShowMessage('Set_InPlaceVisibleOnFocus failed...') else ShowMessage('Set_AttachedEditWindow failed...') else ShowMessage('CoCreateInstance failed...'); end; Wenn man sich nun die Beschreibung zu ITextInputPanel bei Microsoft anschaut, so findet sich dort bereits der Hinweis, dass das Interface in späteren Versionen von Windows ggf. nicht zur Verfügung steht. Stattdessen wird auf IInputPanelConfiguration verwiesen, was aber laut Dokumentation unter Windows 10 nicht funktioniert. Man muss doch irgendwie innerhalb einer Anwendung das Verhalten der virt. Tastatur beeinflussen können? Hat jemand vielleicht einen entscheidenden Hinweis? Gruß |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Unter
![]() Zitat:
Wir haben uns bei unseren Kiosk-Applikationen schon vor länger von dem Windows-Automatismus verabschiedet und machen immer eigene Eingabe-Dialoge mit stinknormalen VCL-Popups. Die funktionieren wenigstens auch bei der nächsten Windows-Halbjahresversion immer noch. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Bei einer Kiosk-Anwendung funktioniert das natürlich. Aber halt nicht, wenn auf dem Tablet-PC nicht nur unsere Anwendung genutzt wird.
Wenn sich keine Möglichkeit finden sollte, dann muss der Anwender wohl den Tablet-Mods deaktivieren und die Tastatur bei Bedarf manuell über die Task-Leiste aufrufen. (Gibt es in der Richtung eigentlich von Microsoft bereitgestellte Foren, in der man eine offizielle Anfrage zu so einer Schnittstelle stellen könnte?) |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Ich bin bei Microsoft im "Developer TAP" (Technology Adoption Preview)-Programm, da kann man sich mit den Entwicklern austauschen, kann aber etwas dauern. Ich versuche da diese Woche einmal nachzufragen, hatte da auch einmal Beschreibung für eine undokumentierte API für Touchpads bekommen. Aber ich würde ehrlich gesagt da nicht zu viel erwarten.
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Vielleicht ist es ein Versuch wert.
Vielen dank schonmal. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
![]() Da steht notfalls auch, wie man für die eigene Anwendung diese Tastatur komplett deaktiviert. Selber anzeigen der Tastatur (oder was Alternativem), da wo man sie braucht, müsste man dann noch machen. Die notmale Bildschirmtastatur ist ja ein Graus. Im WindowsInstaller, weiß Windows noch, dass keine Tastatur angeschlossen ist und zeigt dort die Virtuelle an, aber nach dem ersten Start, ist alles wieder vergessen und man muß erstmal wissen, wie man nur per Touch im Startmenü das findet. Die Option zum Anzeigen ist schnell gefunden, aber die fast versteckte Option die Tablet-Tastatur auch im Desktop-Modus zu nutzen ... damit wird es dann besser, weil Diese Tastatur dann auch Edit/Anwendungen verschiebt, wenn sie auf geht. (nur Delphi-XE hat noch einen Bug, wenn Tastatur zu und es eigentlich wieder Vollbild wird, aber das Programm dann halb bleibt) Wenigstens liegt die angedockte Tablet-Tastatur nicht immer ungünstig überm Programm, vorallem immer da, wo man hinklicken wollte. Auch bissl ungünstig ist, dass man oftmals zwei Mal ins Edit klicken muß, damit die Tastatur auf geht. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Hallo,
Zitat:
Die Touch-Tastatur läuft bei Microsoft unter dem Thema erleichterte Bedienung. Dazu zählt z.b. auch alles was man braucht um seine Anwendung für Menschen mit eingeschrängtem Sehvermögen zu öffnen. Und das läuft über das UIAutomation. Ich würde jetzt gern Sourcecode zeigen, aber das ist nicht meiner. Aber schau mal unter ![]() Vollständig verstanden habe ich das auch noch nicht. Und mir fehlt noch das Reagieren auf das Erscheinen und Verschwinden der Tastatur. Steuern, ob die Tastatur automatisch aufgeht, lässt sich nach meiner Errinnerung durch die Funktion
Delphi-Quellcode:
.
function Get_IsReadOnly(out pRetVal: Integer): HResult; stdcall;
Bei mir sieht die auch so aus:
Delphi-Quellcode:
if ReadOnly then
pRetVal := 1 else pRetVal := 0; // Maybe? result := S_OK; |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zunächst danke für die Hinweise.
Zitat:
Auch der Eintrag in der Registry, der die Anzeige der virt. Tastatur für eine Applikation unterdrücken soll, funktioniert nicht (mehr). Eine angezeigte virt. Tastatur kann ich zumindest über
Delphi-Quellcode:
zuverlässig wieder ausblenden.
Handle := FindWindow(PChar('IPTip_Main_Window'), nil);
if Handle <> 0 then PostMessage(Handle, WM_SYSCOMMAND, SC_CLOSE, 0); |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Danke für deinen Hinweis.
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Gab es am TEdit nicht mal ein Property, wo man einstellen konnte welche Tastatur aufgehen soll?
Dachte eher im FMX, aber auch bei DevExpress grade nichtgefunden, aber mir war so ich hätte mal sowas gesehn. :gruebel: Also normale Tastatur, oder nur Nummerisch, oder wie Telelefon usw. Da hätte man mal nachsehen können, was das macht und ob es da auch eine Einstellung "keine Tastatur" gäbe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:12 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