![]() |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Erstmal danke, dass du dir dafür die Zeit genommen hast.
Zitat:
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. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Hallo,
Zitat:
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
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. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zitat:
z.B. kann man im WMI zwar alle Eingabegeräte sehen, aber ob Eines davon eine physische Tastatur ist, lässt sich garnicht so leicht prüfen. Und manches geht plötzlich nicht mehr, wenn man z.B. einen RDP dazwischen hat, bzw. es ist dort plötzlich unverständlicher Weise andersrum. z.B. haben wir ein TEdit, da werden standadmäßig nur Großbuchstaben/Zahlen eingegeben. Beim Edit aber das UpCase zu aktivieren geht nicht, weil es noch ein paar seltene Sonderfälle gibt, wo man alles klein schreiben muß. Ich hatte vor Kurzem mal ausprobiert im OnEnter/OnLeave das CapsLock zu aktivieren, damit es autoatisch standardmäßig Groß ist, dann noch der Kampf, den blöden BallonHint loszuwerden (Capslock-Warnung von Windows) und als alles ging, dann kam jemand mit RDP und es stellt sich raus, dass dort in dem Edit alles klein ist. Gut, es wäre nicht so schlimm, wenn DORT nur das Aktivieren nicht funktionieren würde (über keybd_event auf CapsLock drücken), aber beim rausgehn wird es DORT auch noch groß, also genau andersrum, wie es eingebaut ist. :wall: |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Ich habe noch einen weiteren Lösungsansatz gefunden: mir war aufgefallen, dass ein TEdit.SetFocus die virt. Tastatur nicht anzeigt.
Also habe ich zunächst versucht, in TEdit.OnClick oder TEdit.OnEnter die Eigenschaft ReadOnly auf FALSE zu setzen. Die Tastatur wurde aber leider weiterhin angezeigt. Dann habe ich mit einem Timer experimentiert, der in TEdit.OnClick / TEdit.OnEnter gestartet wird und nach einer Zeitspanne (250ms) die Eigenschaft ReadOnly auf FALSE setzt. Leider ebenfalls Fehlanzeige. Was aber funktioniert ist, einfach zwei TEdit übereinander zu legen und die Sichtbarkeit zu steuern. Das obere TEdit hat die Eigenschaft ReadOnly auf TRUE gesetzt, das darunter liegende auf FALSE. Das obere ist zunächst sichtbar, das untere nicht. In OnEnter des oberen TEdit wird dann die Sichtbarkeit beider TEdit umgeschaltet, was letztendlich zu dem gewünschten Verhalten führt. Elegant finde ich die Lösung allerdings nicht. Ich werde mir jetzt auch mit Hinblick auf den Aufwand für die Anpassung älterer Dialoge überlegen müssen, welche Lösung ich umsetze. |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Liste der Anhänge anzeigen (Anzahl: 2)
Hallo,
ich habe weitergeforscht und bin etwas weitergekommen. Wenn man der Seite ![]()
Delphi-Quellcode:
mit der man das Tastaturlayout beeinflussen kann.
SetInputScope(hwnd: HWND; inputscope: TInputScope): HRESULT;
Ich habe mal Delphi 11 installiert und meine Änderungen bzgl. UiAutomation aus dem Kundenprojekt raus gelöst und in ein Testprojekt (Anhang 55275) gebracht. Einiges von dem Sourcecode ist Copy/Past aus dem Internet. Woher kann ich nicht mehr ermitteln. Auch habe ich SetInputScope eingebaut. 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. Vieleicht findet ja jemand mit den Infos noch den richtigen Einstieg in die Doku. Ich finde die Dokumentation bei Microsoft mittlerweile als nervend, weil man bei der Suche viel zu oft bei dem XAML-Zeugs landet. Und damit kann man in der VCL absolut nichts anfangen. Aber jetzt noch zu Embarcadero. Was ich nicht verstehe, wieso haben die das SetInputScope nicht schon längst eingebaut. Für einen Entwickler ist das eine halbe Stunde. Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Anhang 55276 * Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Zitat:
Nach bissl verzweifeltem mehrmaligem rumgeklicke in den Tastatur-Einstellungen war ich über diese Option gestoßen. Ich glaube die war ganz weit unterhalb der anderen Option, zum Einblenden der Tastatur, aber als ich für die Doku später nochmal danach sehen wollte ... seitdem finde ich die Option nicht mehr. :freak: Zitat:
SetThreadDescription und sogar GetThreadDescription gibt es auch schon seit über 7 Jahren und dennoch arbeitet TThread.NameThreadForDebugging immernoch ausschließlich mit einer Exception. Echt blöd, denn wird der Debugger erst später angehängt, sind die Namen verloren und auch im Programm kann man die Namen nicht auslesen. Für Unicode hatten sie auch 9 ähh 16 Jahre gebraucht. (WinNT/Win2000) 64 Bit (Windows) kam 10 ähh 18 Jahre zu spät. Für macOS/OSX kam es fast genau 10 Jahre nach der Veröffentlichung. Bei iOS brauchten sie dafür nur 4 Jahre. 64 Bit iOS/OSX kam auch wieder 1-2 Jahre zu spät. (viele konnten nicht mehr oder mußten mit der Beta kämpfen) Und Linux ... da haten sie schonmal nach nur 2 Jahren ein Kylix ... aber der jetzige Linux-Compiler kam ebenfalls 16-17 Jahre zu spät. [edit] Ohhh, ich seh grade, dass ![]() |
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Liste der Anhänge anzeigen (Anzahl: 1)
Ich wollte nur dalassen dass sich bei MS noch keiner dazu geäußert hat, aber vielleicht kommt da ja noch was...
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Hallo,
Zitat:
Zitat:
|
AW: Automatische Anzeige der virt. Tastatur unterdrücken
Im Notfall macht man einfach Beides, so lange bis man fertig ist.
Da diese Funktion ja erst seit Windows 10 existiert, bräuchte man eh ein IF-WinVer im Programm. (gut, man könnte jetzt auch sagen, dass die anderen Windowse eh tot sind, also egal :stupid:) Und sie haben ja bereits im Debugger/RemoteDebugger/PAServer eine Stelle, wo sie den Stacktrace auslesen, dafür haben sie bereits das Handle des Threads und können somit ohne Probleme auch GetThreadDescription aufrufen. Und die andere Stelle, wo die Threads aufgelistet werden, da haben sie bestimmt auch die Handles und können das ebenfalls machen. :roll: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:38 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