Pregunta

Uno de los grandes puntos de venta que vi cuando tenía que comprar Delphi para mi trabajo era la capacidad de la PC de la tableta de apoyo. Ahora el cliente de la empresa en la que trabajo quiere utilizar un Tablet PC. He estado tratando de encontrar ejemplos de Delphi con Tablet PC, pero no encuentro ninguna. ¿Alguien tiene experiencia con ella? Cualquier tipo de tutoriales o ejemplos?

Yo no parecen ser capaces de llevar incluso un teclado virtual cuando una ganancia enfoque componente y se esconden cuando se pierde.

¿Fue útil?

Solución

Delphi 2010 introdujo algún buen soporte táctil y el gesto de Delphi.

Para obtener más información al respecto, vaya a EDN página web y buscarse un CodeRage 4 repeticiones. Hay una sesión titulada " de Las manos en gestos en VCL " por Seppy Bloom. También en CodeRage 5 hay una sesión titulada " Capacidades de un gesto para nueva aplicación y Proyectos Actuales " por Vesvolod Leonov.

Capítulo 6 del Marco Cantu de " Delphi 2010 Handbook " también cubre tacto y los gestos en Delphi.

Con el tiempo, se puede comprobar de Chris Bensen weblog para algunos puestos de introducción y demostración código fuente sobre el tacto y el soporte de gestos en Delphi.

  

Yo no parecen ser capaces incluso de llevar   un teclado virtual cuando un componente   obtener el foco y se esconden cuando pierde   a él.

En Delphi 2010 y versiones más recientes de un contacto habilitados para ya está disponible. Para hacer que sea visible u ocultar cuando se cambia el enfoque, que puede manejar VCL CM_FOCUSCHANGED mensaje del "nofollow", y hacer que el teclado visible cuando el foco ganando control se deriva de una cierta clase o de cumplir algunas condiciones especiales. Aquí es un ejemplo de código:

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;

El código anterior llamadas ActivateVirtualKeyboard se cambia cada foco tiempo. Msg.Sender es el control que ganó enfoque. cheques ActivateVirtualKeyboard si el control es un descendiente TCustomEdit (componentes como TEdit o TMemo descienden de esta clase). Si el control se deriva de TCustomEdit, entonces se coloca la derecha del teclado virtual bajo el control, y hace que el teclado visible; de lo contrario, se esconde el teclado.

En el código de ejemplo que tenemos una edición, una nota, y un botón en Form1. El teclado debe ser visible para Edit1 y Memo1, y se escondieron cuando Button1 tiene el foco.

El cálculo de la posición del teclado en la pantalla no es tan inteligente, y el teclado podría ir demasiado hacia abajo si el control que tiene el foco está muy cerca del borde inferior del formulario. De todos modos, la colocación de un control en la pantalla está fuera del alcance de su pregunta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top