![]() |
IFMXVirtualKeyboardService & Windows
Hallo Zusammen!
Eigentlich sollte man doch davon ausgehen, dass der "IFMXVirtualKeyboardService" auf jeder Plattform das richtige macht. Auf iOS & Android funktioniert es ja bekanntlich, aber auf Windows nicht. Obwohl ein
Delphi-Quellcode:
true ergibt. Wird leider keine Tastatur eingeblendet, wenn ein TEdit den Focus hat.if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyboardService) then OK := true else OK := false; Warum nicht? OK versuchen wir es per Hand...
Delphi-Quellcode:
Das funktioniert - insofern, dass die Tastatur eingeblendet wird - aber:
procedure TForm.Edit1Enter(Sender: TObject);
var IKEY : IFMXVirtualKeyboardService; begin if TPlatformServices.Current.SupportsPlatformService(IFMXVirtualKeyBoardService,IKEY) then IKey.ShowVirtualKeyboard(TEdit(Sender)); end; 1. Will ich nicht in jedem onEnter/onExit so etwas rein setzen 2. dauert es ewig bis die Tastaur sichtbar ist. 3. Ist das ein "verblödetes" Form, welches als 1. mal den Focus klaut und sowieso irgendwo im Weg rum steht. Wie geht es richtig? Habe ich etwas übersehen? Grüsse Mavarik |
AW: IFMXVirtualKeyboardService & Windows
Zitat:
ein
Delphi-Quellcode:
Im Projektfile vor dem nach dem Init, bringt schon mal bei einem Focus das Keyboard...
VKAutoShowMode := TVKAutoShowMode.Always;
bleiben leider noch die Punkt 2 & 3... (2) ok nur beim 1. mal. (3) klaut zwar nicht mehr den Focus, steht aber irgendwo. Leider kommt die Tastatur App hoch und nicht die Windows 8 variante... Ich werde weiter testen.. Edit: Es wird von Firemonkey die osk.exe gestartet und nicht das Windows 8 OnScreenKeyboard. Das ist das Problem. Mavarik |
AW: IFMXVirtualKeyboardService & Windows
Ich habs erst mal. Dank der Hilfe von Sir Rufo...
Ich noch nicht optimal, aber durch eine kleine Änderung in der FMX.Platform.Win Ausszug aus der TVirtualKeyBoardWin.Create
Delphi-Quellcode:
Schön wäre es noch ohne den {$DEFINE HARDCODED}
if DVersion < 620 then
begin if Winapi.Windows.RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Enum', 0, KEY_READ, HID) = ERROR_SUCCESS then try S := FindKeyValue(HID, 'ClassGUID', '{4D36E96B-E325-11CE-BFC1-08002BE10318}', 'Control', 'ActiveService'); FKBPresent := S <> ''; finally RegCloseKey(HID); end; end else begin {$IFNDEF HARDCODED} if Winapi.Windows.RegOpenKeyEx(HKEY_LOCAL_MACHINE, 'SOFTWARE\Classes\', 0, KEY_READ,HID) = ERROR_SUCCESS then try S := FindKeyValue(HID, 'CLSID', '{054AAE20-4BEA-4347-8A35-64A533254A9D}', 'LocalServer32',''); // Häää FPath := S; FExeName := 'TabTip.exe'; FWndClassName := 'IPTip_Main_Window'; FKBPresent := S <> ''; finally RegCloseKey(HID); end; {$ELSE} FPath := 'C:\Program Files\Common Files\Microsoft Shared\Ink'; //S; FExeName := 'TabTip.exe'; FWndClassName := 'IPTip_Main_Window'; FKBPresent := true; {$ENDIF} //Windows.Devices.Input.KeyboardCapabilities.KeyboardPresent end; Grüsse Mavarik |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:32 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