AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Verwenden des TextInputPanels / der PenInputPanelLib_TLB
Thema durchsuchen
Ansicht
Themen-Optionen

Verwenden des TextInputPanels / der PenInputPanelLib_TLB

Ein Thema von Y.Elm · begonnen am 16. Jan 2012 · letzter Beitrag vom 16. Jan 2012
Antwort Antwort
Y.Elm

Registriert seit: 19. Sep 2011
Ort: Berlin
21 Beiträge
 
Delphi 2010 Professional
 
#1

Verwenden des TextInputPanels / der PenInputPanelLib_TLB

  Alt 16. Jan 2012, 11:28
Hallo allerseits, ich hoffe, ich bin im richtigen Forum unterwegs mit meiner Frage.
Ich habe in diesem Beitrag gelesen, wie die Steuerung der Windows-Touch-Tastatur (oder auch TextInputPanel) möglich sein soll.
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:
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;
Allerdings sieht die Deklaration von Set_AttachedEditWindow so aus:
function Set_AttachedEditWindow(var AttachedEditWindow: _RemotableHandle): HResult; stdcall; Was bitte ist ein _RemotableHandle und wie kann ich der Funktion das Handle meines Edit1 übergeben?
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 )
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB

  Alt 16. Jan 2012, 12:04
Nimm einfach das Fensterhandle des Edit-Felds her. Das funktioniert bei mir bisher ohne Probleme.
  Mit Zitat antworten Zitat
Y.Elm

Registriert seit: 19. Sep 2011
Ort: Berlin
21 Beiträge
 
Delphi 2010 Professional
 
#3

AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB

  Alt 16. Jan 2012, 13:50
Zitat:
Nimm einfach das Fensterhandle des Edit-Felds her.
Genau das versteh ich ja nicht. Dieses ominöse _RemotableHandle sieht folgendermaßen aus:
Delphi-Quellcode:
  _RemotableHandle = record
    fContext: Integer;
    u: __MIDL_IWinTypes_0009;
  end;
Diesem Record kann ich natürlich kein Handle mit der Deklaration HWND = type LongWord; zuweisen.
In meinem Test hab ich es mal so probiert:
Delphi-Quellcode:
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;
Als Ergebnis davon steht in der Caption " -2147024809 - 1", woraus ich schließe, dass TIP.Set_AttachedEditWindow(hnd); nicht funktioniert hat.
Edit: Und natürlich poppt dieses Tastatur-Icon wieder auf, was ich deaktivieren wollte.

Geändert von Y.Elm (16. Jan 2012 um 13:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB

  Alt 16. Jan 2012, 14:34
Das glaub ich ist ein Fehler des Library Imports. Du kannst es so ersetzen:

Delphi-Quellcode:
function Get_AttachedEditWindow(out AttachedEditWindow: SYSINT): HResult; stdcall;
function Set_AttachedEditWindow(AttachedEditWindow: SYSINT): HResult; stdcall;
Da gab's mal irgendwo einen Kommentar von einem der Borlandleute dazu, ich weiß aber nicht mehr wann und wo.
  Mit Zitat antworten Zitat
Y.Elm

Registriert seit: 19. Sep 2011
Ort: Berlin
21 Beiträge
 
Delphi 2010 Professional
 
#5

AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB

  Alt 16. Jan 2012, 14:57
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 .

Muss man das TextInputPanel für jedes Editfeld einzeln deaktivieren oder geht das auch Formularweit?
  Mit Zitat antworten Zitat
Benutzerbild von ULIK
ULIK

Registriert seit: 25. Sep 2006
Ort: Regensburg
416 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Verwenden des TextInputPanels / der PenInputPanelLib_TLB

  Alt 16. Jan 2012, 16:31
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz