Frage

Einer der großen Verkaufsargumente ich sah, als ich hatte für meinen Job zu kaufen delphi war die Fähigkeit zur Unterstützung Tablet-PCs. Jetzt ist der Kunde der Firma, wo ich arbeiten will einen Tablet-PC verwenden. Ich habe hart versucht, Beispiele von delphi mit Tablet-PC zu finden, aber ich finde keine. Hat jemand hat Erfahrung damit? Jede Art von Tutorials oder Beispiele?

Ich scheine nicht in der Lage zu sein, auch eine virtuelle Tastatur, wenn eine Komponente Verstärkung des Fokus zu bringen und verstecke es, wenn es verliert.

War es hilfreich?

Lösung

Delphi 2010 eingeführt einige nette Geste und Gestik Unterstützung zu Delphi.

Für weitere Informationen darüber zu erhalten, gehen Sie zu EDN Website und sucht Coderage 4 Replays. Es gibt eine Sitzung mit dem Titel " Hände auf Gesten in VCL " von Seppy Bloom. Auch in Coderage 5 gibt es eine Sitzung mit dem Titel " Gestikulieren Fähigkeiten für neue Anwendung und aktuelle Projekte " von Vesvolod Leonov.

Kapitel 6 von Marco Cantus " Delphi 2010 Handbuch " deckt auch Berührungs- und Gesten in Delphi.

Schließlich können Sie überprüfen, Chris Bensen Weblog für einige einführende Beiträge und Demo Source-Code über Berührungs- und Gestenunterstützung in Delphi.

  

Ich scheine nicht in der Lage zu sein, selbst zu bringen   eine virtuelle Tastatur, wenn eine Komponente   gewinnen Fokus und verstecken es, wenn es verliert   es.

In Delphi 2010 und neuere Versionen ein Touch-fähigen Tastatur Komponente ist bereits vorhanden. Um es sichtbar ist oder ausblenden, wenn der Fokus geändert wird, können Sie ein href Griff <= „http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/Controls_CM_FOCUSCHANGED.html“ rel = „nofollow“> CM_FOCUSCHANGED VCL Nachricht und machen die Tastatur sichtbar, wenn die Kontrolle gewinnt Fokus von einer bestimmten Klasse abgeleitet ist oder erfüllt einige besondere Bedingungen. Hier ist ein Beispielcode:

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    TouchKeyboard1: TTouchKeyboard;
  private
    procedure ActivateVirtualKeyboard(Control: TWinControl; Keyboard: TTouchKeyboard);
    procedure CmFocusChanged(var Msg: TCMFocusChanged); message CM_FOCUSCHANGED;
  public
    { Public declarations }
  end;

/// Implementation

procedure TForm1.ActivateVirtualKeyboard(Control: TWinControl; Keyboard: TTouchKeyboard);
var
  APoint : TPoint;
begin
  if Control is TCustomEdit then
  begin
    APoint := Control.ClientToScreen(Point(0,0));
    APoint := Keyboard.Parent.ScreenToClient(APoint);
    Keyboard.Left := APoint.X;
    Keyboard.Top := APoint.Y + (Control.Height);
    Keyboard.Visible := True;
  end
  else
    Keyboard.Visible := False;
end;

procedure TForm1.CmFocusChanged(var Msg: TCMFocusChanged);
begin
  ActivateVirtualKeyboard(Msg.Sender, TouchKeyboard1);
end;

Der obige Code Anrufe ActivateVirtualKeyboard jedes Mal Fokus geändert wird. Msg.Sender ist die Kontrolle, die Fokus gewonnen. ActivateVirtualKeyboard prüft, ob die Steuerung ein TCustomEdit Nachkommen (Komponenten wie TEdit oder TMemo stammen von dieser Klasse). Wenn die Steuerung von TCustomEdit abgeleitet wird, dann legt sie virtuelle Tastatur direkt unter der Kontrolle und macht die Tastatur sichtbar; andernfalls es blendet die Tastatur.

In dem Beispielcode wir bearbeitet haben, ein Memo, und eine Schaltfläche auf Form1. Die Tastatur sollte für Edit1 und Memo1 sichtbar und versteckte wenn Button1 Fokus hat.

Die Berechnung für Tastatur Position auf dem Bildschirm ist nicht so klug, und die Tastatur könnte geht auch nach unten, wenn die Steuerung mit Fokus liegt sehr nahe am unteren Rande des Formulars. Wie auch immer, auf dem Bildschirm eine Steuer Positionierung ist aus dem Umfang Ihrer Frage.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top