Delphi 2010 Tablet PC Support
-
29-09-2019 - |
Question
L'un des grands points de vente, j'ai vu quand je devais acheter delphi pour mon travail était la capacité de la tablette de support PC. Maintenant, le client de l'entreprise où je travaille veulent utiliser une tablette PC. J'ai essayé difficile de trouver des exemples de delphi avec tablette pc mais je ne trouve pas. Est-ce que quelqu'un a l'expérience avec elle? Tout type de tutoriels ou des exemples?
Je ne semble pas être en mesure d'apporter même un clavier virtuel quand un foyer de gain composant et cache quand il perd.
La solution
Delphi 2010 a introduit un certain soutien tactile et le geste agréable à Delphes.
Pour obtenir plus d'informations à ce sujet, allez à EDN site et cherchez CodeRage 4 replays. Il y a une session intitulée " Les mains sur les gestes dans VCL " par Seppy Bloom. De plus en CodeRage 5 il y a une session intitulée " Capacités pour la Nouvelle-Gestes et projets en cours d'application " par Vesvolod Leonov.
Chapitre 6 de Marco Cantu de " Delphi 2010 Manuel " couvre également toucher et geste à Delphes.
Finalement, vous pouvez vérifier Chris Bensen de blog pour certains postes d'introduction et démo code source au sujet de toucher et geste de soutien à Delphes.
Je ne semble pas être en mesure d'apporter même un clavier virtuel lorsqu'un composant obtenir le focus et se cacher quand il perd il.
Dans Delphi 2010 et les versions plus récentes une touche-enabled est déjà disponible. Pour le rendre visible ou le cacher lorsque le focus est changé, vous pouvez gérer CM_FOCUSCHANGED VCL message et rendre le clavier visible lorsque le focus gagnant de contrôle est dérivé d'une certaine classe ou répond à certaines conditions particulières. 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 appels ActivateVirtualKeyboard chaque foyer de changement d'heure. Msg.Sender est le contrôle qui a reçu le focus. contrôles ActivateVirtualKeyboard si le contrôle est un descendant de TCustomEdit (composants tels que TEdit ou TMemo descendent de cette classe). Si le contrôle est dérivé de TCustomEdit, il place à droite du clavier virtuel sous le contrôle et rend le clavier visible; sinon, il cache le clavier.
Dans l'exemple de code que nous avons modifié, une note de service, et un bouton sur Form1. Le clavier doit être visible pour Edit1 et Memo1, et quand hid Button1 a le focus.
Le calcul de la position du clavier à l'écran est pas intelligent, et le clavier seront peut-être trop bas si la mise au point d'avoir de contrôle est très proche du bord inférieur de la forme. Quoi qu'il en soit, le positionnement d'un contrôle à l'écran est hors de la portée de votre question.