Delphi 2010 Tablet PC de la ayuda
-
29-09-2019 - |
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.
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.