Domanda

Uno dei grandi punti di vendita che ho visto quando ho dovuto comprare Delphi per il mio lavoro era la capacità di supporto di tablet pc. Ora il cliente della società in cui lavoro vuole utilizzare un Tablet PC. Ho cercato difficile trovare esempi di Delphi con tablet pc, ma non trovo alcuna. Qualcuno ha esperienza con esso? Qualsiasi tipo di tutorial o esempi?

Non mi sembra di essere in grado anche di portare una tastiera virtuale quando un utile di messa a fuoco dei componenti e nasconderlo quando perde.

È stato utile?

Soluzione

Delphi 2010 ha introdotto qualche bel tocco di sostegno e il gesto di Delphi.

Per ottenere maggiori informazioni a riguardo, vai alla EDN sito e look per CodeRage 4 replay. C'è una sessione dal titolo " Hands on gesti VCL " di Seppy Bloom. Anche in CodeRage 5 c'è una sessione dal titolo " Funzionalità a gesti di nuova applicazione e Progetti in corso " di Vesvolod Leonov.

Capitolo 6 di Marco Cantù di " Delphi 2010 Handbook " copre anche il tatto e il gesto in Delphi.

Alla fine, è possibile controllare di Chris Bensen weblog per alcuni post introduttivi e demo il codice sorgente su Touch e il supporto gesto in Delphi.

  

Non mi sembra di essere in grado anche di portare   una tastiera virtuale quando un componente   ottenere messa a fuoco e nasconderlo quando perde   esso.

In Delphi 2010 e le versioni più recenti di un touch-enabled href="http://docwiki.embarcadero.com/VCL/e/index.php/Keyboard.TTouchKeyboard" è già disponibile. Per rendere visibile o nascondere quando si cambia messa a fuoco, è possibile gestire CM_FOCUSCHANGED VCL messaggio "nofollow", e rendere la tastiera visibile quando il focus ottenere il controllo è derivato da una certa classe o soddisfi alcune condizioni particolari. Ecco un esempio di codice:

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;

Il codice sopra chiamate ActivateVirtualKeyboard ogni attenzione volta che viene modificato. Msg.Sender è il controllo che ha guadagnato messa a fuoco. controlli ActivateVirtualKeyboard se il controllo è un discendente TCustomEdit (componenti come TEdit o TMemo discendono da questa classe). Se il controllo è derivato da TCustomEdit, allora pone proprio tastiera virtuale sotto controllo, e rende visibile la tastiera; in caso contrario, si nasconde la tastiera.

Nel codice di esempio abbiamo una modifica, un promemoria, e un pulsante sul Form1. La tastiera dovrebbe essere visibile per Edit1 e Memo1, e HID quando Button1 è l'elemento attivo.

Il calcolo di posizione tastiera sullo schermo non è che intelligente e tastiera potrebbe andare troppo basso se il controllo avente fuoco è molto vicino al bordo inferiore del modulo. In ogni caso, il posizionamento di un controllo sullo schermo è fuori della portata della tua domanda.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top