![]() |
Verwenden des TextInputPanels / der PenInputPanelLib_TLB
Hallo allerseits, ich hoffe, ich bin im richtigen Forum unterwegs mit meiner Frage.
Ich habe ![]() Ich hab mich also frisch ans Werk gemacht, die Typenbibliothek PenInputPanelLib_TLB importiert, in einem kleinen Testprogrämmchen ein TextInputPanel erzeugt und möchte diesem mitteilen, dass es sich nicht automatisch öffnen soll, wenn man auf Edit1 tippt. Soweit ich verstanden habe, sind dazu folgende Schritte notwendig:
Delphi-Quellcode:
Allerdings sieht die Deklaration von Set_AttachedEditWindow so aus:
procedure TForm1.FormCreate(Sender: TObject);
var TIP: TextInputPanel; begin TIP := CoTextInputPanel.Create; // TextInputPanel erzeugen TIP.Set_AttachedEditWindow(Edit1.Handle); // Ziel-Komponente zuweisen TIP.Set_InPlaceVisibleOnFocus(Integer(FALSE)); // TIP bleibt unsichtbar, wenn Ziel-Komponente fokussiert wird end;
Delphi-Quellcode:
Was bitte ist ein _RemotableHandle und wie kann ich der Funktion das Handle meines Edit1 übergeben?
function Set_AttachedEditWindow(var AttachedEditWindow: _RemotableHandle): HResult; stdcall;
Da die ganze TLB für mich noch fremd ist und eher nach Voodoo aussieht, wäre ich sehr dankbar, wenn mir jemand helfen könnte oder allgemeine Hinweise zum Gebrauch der PenInputPanelLib_TLB geben könnte. (Der Hintergrund des Ganzen ist übrigens: unsere Software war bisher nur für den Betrieb auf Desktop-PCs mit Touch-Monitor ausgelegt, wo höchstwahrscheinlich eine Hardware-Tastatur verfügbar ist. Es ist also in fast allen Dialogen ein programminternes TouchKeyboard vorhanden ... aber nur in fast allen. Mit dem Durchbruch der Tablet-PCs soll unsere Software auch da benutzt werden können. Nun ist es meine Aufgabe, das automatische Aufpoppen des Windows TouchKeyboards in den Dialogen mit eigenem Keyboard zu verhindern und in allen anderen zuzulassen :roll:) |
AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB
Nimm einfach das Fensterhandle des Edit-Felds her. Das funktioniert bei mir bisher ohne Probleme.
|
AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB
Zitat:
Delphi-Quellcode:
Diesem Record kann ich natürlich kein Handle mit der Deklaration
_RemotableHandle = record
fContext: Integer; u: __MIDL_IWinTypes_0009; end;
Delphi-Quellcode:
zuweisen.
HWND = type LongWord;
In meinem Test hab ich es mal so probiert:
Delphi-Quellcode:
Als Ergebnis davon steht in der Caption " -2147024809 - 1", woraus ich schließe, dass TIP.Set_AttachedEditWindow(hnd); nicht funktioniert hat.
procedure TForm1.FormCreate(Sender: TObject);
var TIP: TextInputPanel; hnd: _RemotableHandle; res: HResult; begin TIP := CoTextInputPanel.Create; hnd.fContext := Edit1.Handle; res := TIP.Set_AttachedEditWindow(hnd); Form1.Caption := inttostr(res); res := TIP.Set_InPlaceVisibleOnFocus(Integer(FALSE)); Form1.Caption := Form1.Caption + ' - ' + inttostr(res); end; Edit: Und natürlich poppt dieses Tastatur-Icon wieder auf, was ich deaktivieren wollte. |
AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB
Das glaub ich ist ein Fehler des Library Imports. Du kannst es so ersetzen:
Delphi-Quellcode:
Da gab's mal irgendwo einen Kommentar von einem der Borlandleute dazu, ich weiß aber nicht mehr wann und wo.
function Get_AttachedEditWindow(out AttachedEditWindow: SYSINT): HResult; stdcall;
function Set_AttachedEditWindow(AttachedEditWindow: SYSINT): HResult; stdcall; |
AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB
Herzlichen Dankan ULIK!
Nach deiner Antwort ist mir spontan aufgefallen, dass sich die Parameter der Funktion Set_AttachedEditWindow von ITextInputPanel und IPenInputPanel unterscheiden. Man, darauf muss man erstmal kommen :wall:. Muss man das TextInputPanel für jedes Editfeld einzeln deaktivieren oder geht das auch Formularweit? |
AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB
Ich glaube nicht, daß das global geht. Du bindest ja eine Panelinstanz immer an ein Fensterhandle. Aber da mußt vieleicht nochmal schauen.
Grüße, Ulrich |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:45 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