2010-11-29 36 views
4

L'un des principaux arguments de vente que j'ai vus lorsque j'ai dû acheter Delphi pour mon travail a été la possibilité de prendre en charge les tablettes PC. Maintenant, le client de la société où je travaille veut utiliser un tablet pc. J'ai essayé dur de trouver des exemples de Delphi avec tablette mais je n'en trouve pas. Est-ce que quelqu'un a de l'expérience avec ça? Des tutoriels ou des exemples?Prise en charge du Tablet PC Delphi 2010

Je ne semble même pas pouvoir apporter de clavier virtuel lorsqu'un composant prend le focus et le cache lorsqu'il le perd.

+1

Rechercher 'touch' et' gesture', ce sont les fonctionnalités sous-jacentes qui supportent la programmation de tablettes. –

Répondre

7

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.

+1

Et un DR. Bob Link: http: //www.drbob42.com/examines/examinB6.htm –