Delphi 2010 a introduit une belle prise en charge tactile et gestuelle pour Delphi.
Pour obtenir plus d'informations à ce sujet, rendez-vous sur le site Web EDN et recherchez les replays CodeRage 4. Il y a une session intitulée "Mains sur les gestes dans VCL" par Seppy Bloom. Toujours dans CodeRage 5 il y a une session intitulée "Gesturing Capabilities pour nouvelle application et projets en cours" par Vesvolod Leonov.
Chapitre 6 de "Delphi 2010 Manuel" Marco Cantu couvre également toucher et geste à Delphes.
Finalement, vous pouvez vérifier Chris Bensen's weblog pour quelques messages d'introduction et le code source de démonstration sur la prise en charge tactile et gestuelle dans Delphi.
Je ne semble pas être en mesure d'apporter même un clavier virtuel quand un focus de gain composant et se cacher quand il perd il.
Dans Delphi 2010 et versions plus récentes, un keyboard component activé par un contact est déjà disponible. Pour le rendre visible ou le masquer lorsque le focus est modifié, vous pouvez gérer le message VCL CM_FOCUSCHANGED et rendre le clavier visible lorsque le contrôle obtenant le focus est dérivé d'une certaine classe ou répond à certaines conditions spéciales. Voici un exemple de code:
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;
Le code ci-dessus appelle ActivateVirtualKeyboard chaque fois que le focus est modifié. Msg.Sender est le contrôle qui a gagné le focus. ActivateVirtualKeyboard vérifie si le contrôle est un descendant TCustomEdit (des composants tels que TEdit ou TMemo descendent de cette classe). Si le contrôle est dérivé de TCustomEdit, il place le clavier virtuel juste sous le contrôle et rend le clavier visible; sinon, il cache le clavier.
Dans l'exemple de code, nous avons une modification, un mémo et un bouton sur Form1. Le clavier devrait être visible pour Edit1 et Memo1, et caché lorsque Button1 a le focus.
Le calcul de la position du clavier sur l'écran n'est pas très judicieux, et le clavier risque d'être trop bas si la commande ayant le focus est très proche du bord inférieur du formulaire. Quoi qu'il en soit, positionner un contrôle sur l'écran est hors de la portée de votre question.
Rechercher 'touch' et' gesture', ce sont les fonctionnalités sous-jacentes qui supportent la programmation de tablettes. –