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

Automatische Anzeige der virt. Tastatur unterdrücken

Ein Thema von hotrs02 · begonnen am 25. Jul 2022 · letzter Beitrag vom 9. Aug 2022
Antwort Antwort
Seite 4 von 4   « Erste     234
hotrs02

Registriert seit: 7. Apr 2022
23 Beiträge
 
#31

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 4. Aug 2022, 09:27
@einbeliebigername
Zunächst danke für deine Bemühungen. Vielleicht kann ich mich irgendwann einmal revanchieren.

Das UiAutomation-Zeugs wird noch durchlaufen. Mit dem SetInputScope lässt sich die automatisch eingeblendete Tastatur bzgl. des Layouts auch beeinflussen (z.B. nur Zahlen). Wenn man das ReadOnly des Edits auf True setzt und bei dem Get_IsReadOnly eine 0 zurück gibt, geht die Tastatur auch automatisch auf. Dann aber immer mit dem Standartlayout. Also das SetInputScope gehört zu dem Standartverhalten. Und wenn man kein Standart-Control hat, hilft das UiAutomation.
Tatsächlich lässt sich damit die automatische Anzeige der virt. Tastatur so unterdrücken, wie wir es benötigen würden. Allerdings bleibt hier noch das Problem der Auswertung der Tastatureingaben, welche ein TEdit mit der Eigenschaft ReadOnly = TRUE natürlich einfach ignoriert. Und da wir die virt. Tastatur nur gezielt unterbinden möchten, könnte ich hier einfach direkt auf ein TEdit mit der Eigenschaft ReadOnly = TRUE zurückgreifen und auf das UIAutomation Framework verzichten.

Bis auf weiteres haben wir uns für die Lösung mit den doppelten Steuerelementen und der Steuerung der Sichtbarkeit entschieden. Damit erreichen wir in unserem Fall die größte Flexibilität.


Vieleicht ist ja das SetInputScope und der Verzicht auf eine eigene Tastatur die bessere Variante.
In unserem Anwendungsfall ist das leider wenig zielführend. Unsere virt. Tastatur verfügt über zusätzliche Funktionalität (Auslösung bestimmter Aktionen), die jederzeit erreichbar sein muss.
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
23 Beiträge
 
#32

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 4. Aug 2022, 09:28
Ich wollte nur dalassen dass sich bei MS noch keiner dazu geäußert hat, aber vielleicht kommt da ja noch was...
Danke für das Update!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.656 Beiträge
 
Delphi 11 Alexandria
 
#33

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 4. Aug 2022, 10:51
OK, aber auch erst nach Umschalten.
Kein Direktdrücken für eine Schnellwahlfunktion.

Für F-Tasten immer stichtbar und Zahlen als Zehnerblock wäre mehr als ausreichend genug Platz.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.656 Beiträge
 
Delphi 11 Alexandria
 
#34

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 4. Aug 2022, 16:51
Joar, also bezüglich SetInputScope gibt es noch garkeine Meldungen auf https://quality.embarcadero.com


und beim Anderen .... joar, hatte schon wieder ganz vergessen, aber da hat sich eh nichts getan
https://quality.embarcadero.com/brow...Description%22
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
einbeliebigername

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

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 8. Aug 2022, 15:43
Hallo,

ich habe noch weiter geforscht. Mir fehlt ja noch das Reagieren auf das Ein-/Aus-blenden der Tastatur. Ich habe mit den Schlagwörtern und Bezeichnern von der Seite https://docs.microsoft.com/de-de/win...touch-keyboard die Suchen gequält.

Bei einer Suche für dieses Thread bin ich mal auf den Blogbeitrag (https://blogs.embarcadero.com/de/delphi-winui-3-demo/) von Embarcadero zum Thema Win UI 3 gestoßen. Dort geht es eigentlich mehr um XAML, aber man ist ja schon etwas verzweifelt und greift nach dem kleinsten Strohhalm. Ich hatte auch schon das Demo-Projekt aus GetIt auf der Platte und bin mit einem Bezeichner fündig geworden.

In der Unit Winapi.UI.ViewManagement gibt es die Klasse TCore_CoreInputView mit der Klassenmethode GetForCurrentView . Diese gibt ein Interface vom Type Core_ICoreInputView zurück, welches unteranderem zwei Funktionen TryShowPrimaryView und TryHidePrimaryView kennt. Ich habe das mal ausprobiert (aktualisiertes Projekt im Anhang). Bei mir geht mit den Funktionen die Bildschirmtastatur auf und zu.

Bloß mit dem OcclusionsChanged werde ich nicht ganz warm. Die Liste, welche man da bekommt, ist sehr oft leer. Und bei dem OcclusionKind hab ich bis jetzt nur Floating gesehen.

Nun gilt es an die richtigen Interfaces zu kommen. Mich interessiert z.B.:
Delphi-Quellcode:
  Core_ICoreInputView4 = interface(IInspectable)
  ['{002863D6-D9EF-57EB-8CEF-77F6CE1B7EE7}']
    function add_PrimaryViewShowing(handler: TypedEventHandler_2__Core_ICoreInputView__Core_ICoreInputViewShowingEventArgs): EventRegistrationToken; safecall;
    procedure remove_PrimaryViewShowing(token: EventRegistrationToken); safecall;
    function add_PrimaryViewHiding(handler: TypedEventHandler_2__Core_ICoreInputView__Core_ICoreInputViewHidingEventArgs): EventRegistrationToken; safecall;
    procedure remove_PrimaryViewHiding(token: EventRegistrationToken); safecall;
  end;
Angehängte Dateien
Dateityp: zip Dp211080.AutomatischeAnzeigeDerVirtTastaturUnterdruecken.zip (67,0 KB, 2x aufgerufen)
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt 8. Aug 2022, 18:57
Du warst schneller, den IInputView hatte MS jetzt auch:

Zitat:
Emily Bender

Howdy, I believe this may help: CoreInputView.PrimaryViewShowing Event (Windows.UI.ViewManagement.Core) - Windows UWP applications | Microsoft Docs

There's a function called TryCancel, so when the SIP wants to show, in your handler you call TryCancel

LMK if there's more help i can provide, a thread over mail may be helpful as I can loop in relevant text input devs who can help debug
  Mit Zitat antworten Zitat
hotrs02

Registriert seit: 7. Apr 2022
23 Beiträge
 
#37

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt Gestern, 15:38
Vielen Dank an euch beide für eure Mühen.

Das kommt genau richtig, der Ansatz mit dem doppelten, schreibgeschützten Eingabefeldern hat nämlich leider doch einen Haken. Wir nach auf von TEdit.SetFocus das Eingabefeld erneut angeklickt, so öffnet sich letztendlich doch leider noch die Tastatur.

Ich werde mir die Tage die genannte Schnittstelle genauer anschauen.
  Mit Zitat antworten Zitat
einbeliebigername

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

AW: Automatische Anzeige der virt. Tastatur unterdrücken

  Alt Gestern, 23:39
Hallo,

Ach, ich schnell ... ne.

den IInputView hatte MS jetzt auch:
Ne, MS hat das bestimmt schon länger. Wir haben es jetzt teilweise auch. Es fehlt noch vieles.

Zitat:
Emily Bender

Howdy, I believe this may help: CoreInputView.PrimaryViewShowing Event (Windows.UI.ViewManagement.Core) - Windows UWP applications | Microsoft Docs

There's a function called TryCancel, so when the SIP wants to show, in your handler you call TryCancel

LMK if there's more help i can provide, a thread over mail may be helpful as I can loop in relevant text input devs who can help debug
Ich habe bei meinem Testprojekt weiter gemacht (aktualisierte Version im Anhang) und soweit vollständig vorhanden die Events implementiert. Für das enthaltene Memo habe ich das TryCancel beim PrimaryViewShowing mal umgesetzt.

Es funktioniert wenn man die Bildschirmtastatur generell nicht aufgehen lassen will (also immer ein TryCancel macht, aber ich habe das bei Anwendungswechsel noch nicht getestet). Das Problem ist, dass dieses PrimaryViewShowing bei jedem Focuswechsel gefeuert wird, auch wenn die Bildschirmtastatur schon eingeblendet ist. Wenn man das TryCancel aufruft wenn die Tastatur bereits eingeblendet ist, geht diese nicht zu und kommt etwas durcheinander. Sie schließt sich dann nicht mehr automatisch. Leider fehlt noch eine Möglichkeit abzufragen ob die Tastatur eingeblendet ist.

Beim stöbern in der MS-Doku bin ich auf CoreTextEditContext.InputPaneDisplayPolicy gestoßen. Damit soll man das automatische Einblenden der Tastatur abschalten können. Der nötige Aufzählungstyp ist auch schon in der Unit Winapi.UI.Text vorhanden. Aber das entsprechende Interface fehlt.
Angehängte Dateien
Dateityp: zip Dp211080.AutomatischeAnzeigeDerVirtTastaturUnterdruecken.zip (68,5 KB, 0x aufgerufen)
Mit freundlichen Grüßen, einbeliebigername.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 06:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf