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 TTouchkeyboard in verschiedenen Forms (https://www.delphipraxis.net/216186-ttouchkeyboard-verschiedenen-forms.html)

TomyN 15. Nov 2024 17:52

TTouchkeyboard in verschiedenen Forms
 
Hallo,

Ich habe hier eine Anwendung, für die ich ein Touchkeyboard verwenden will.
Das funktioniert im Prinzip auch gut, allerdings hab ich folgende Frage:
Ich habe einige (Unter-) Forms, die aus der Mainform aufgerufen werden. Aktuell schaffe ich es nicht, dass ich den Input von einem, im Mainform definiertem, Touchkeyboard, in die jeweils fokusierte Form (bzw. die dort focusierte Control) bringe.
Gibt es da einen Trick, damit ich nicht in jede Form ein TTouchkeyboard einbinden muss?

Vielen Dank
Tomy

TurboMagic 15. Nov 2024 21:40

AW: TTouchkeyboard in verschiedenen Forms
 
m.W. leider nein!
Wirst da glabe ich nicht drum herum zu kommen.
Tastatureingabe dieses TouchKeyboards geht soweit mir bekannt immer
ins fokussierte Steuerelement des Festers auf dem die ist.

himitsu 15. Nov 2024 22:53

AW: TTouchkeyboard in verschiedenen Forms
 
Da beim Anklicken das Fenster den Fokus bekommt, kann die Eingabe auch nur in diesem Fenster landen.

Selbst wenn man jetzt die Eingabe abfangen würde, dann wüsste dieses Keyboard / dein Code aber auch nicht mehr, dass vorher ein anderes Fenster den Fokus hatte.


Keyboard auf eine eigene Form, welche beim Klick in den Clientbereich nie den Fokus bekommen darf.
Oder das Keyboard vom Windows nutzen.
Delphi-Quellcode:
C:\Windows\System32\osk.exe


SW_SHOWNOACTIVATE, WS_POPUPWINDOW und irgendwie sowas.


Delphi-Quellcode:
uses Winapi.ShellAPI;

procedure TForm2.Button1Click(Sender: TObject);
begin
  // Lässt sich so aber nicht aus einen Win32-Programm aufrufen ... nur Win64,
  // oder du fängst an bissl zu pfuschen.
  ShellExecute(Self.Handle, nil, {'C:\Windows\System32\osk.exe'}'osk.exe', nil, nil, SW_SHOW);
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  keybd_event(VK_LWIN, 0, 0, 0);
  keybd_event(VK_OEM_PERIOD, 0, 0, 0);
  keybd_event(VK_OEM_PERIOD, 0, KEYEVENTF_KEYUP, 0);
  keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP, 0);
end;
Liegt aber nicht am Delphi.
https://stackoverflow.com/questions/...ton-in-c-sharp
https://www.delphipraxis.net/215802-...dows-11-a.html

Und selbst die uralte virtuelle Tastatur
Delphi-Quellcode:
'TapTip.exe'
ist nur noch im Win64 verfügbar.

Uwe Raabe 16. Nov 2024 00:52

AW: TTouchkeyboard in verschiedenen Forms
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1543158)
Keyboard auf eine eigene Form, welche beim Klick in den Clientbereich nie den Fokus bekommen darf.

So habe ich das vor einiger Zeit auch mal gelöst. Ist aber schon ein gewisser Aufwand das zu implementieren. Ich habe die Unit mal angehängt. Vcl-Styles sollten funktionieren, aber High-DPI gabs damals noch nicht - könnte aber trotzdem gehen. Da ich das Ding aber schon eine Weile nicht mehr benutzt habe gibt es keine Garantie. Auch der Programmierstil ist vielleicht nicht mehr auf dem neuesten Stand.

TomyN 16. Nov 2024 10:35

AW: TTouchkeyboard in verschiedenen Forms
 
Vielen Dank für die Antworten und Ideen. Da es um ein 'privates' Projekt geht, muss ich mich mit dem Kunden (also mit mir) einig werden, welche Lösung Sinn macht. Da das nur auf 64Bit laufen wird, wäre das windows-keyboard vielleicht auch eine Idee.

@Uwe: Mein Programmierstil ist noch etwas älter als der in Deinem Beispiel. Ich habe das Programmieren stark strukturiert erlernt :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:53 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 by Thomas Breitkreuz