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:
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;
Trotzdem wird danach bei Anwahl des Eingabefeldes automatisch die virt. Tastatur von Windows aufgerufen.
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ß