Delphi 2010 Tablet PC支持
-
29-09-2019 - |
题
当我不得不购买Delphi的工作时,我看到的最大卖点之一就是能够支持Tablet PC的PC。现在,我工作的公司客户想使用平板电脑。我一直在努力找到带有Tablet PC的Delphi的示例,但我找不到。有人有经验吗?有什么类型的教程或示例吗?
当组件失去时,我似乎甚至无法携带虚拟键盘并将其隐藏。
解决方案
Delphi 2010为Delphi提供了一些不错的触感和手势支持。
要获取有关它的更多信息,请转到 Edn 网站并查找编码4重播。有一个标题为“vcl中的手势“由Seppy Bloom。也在编码器5中,有一个标题为“新应用程序和当前项目的手势功能“ Vesvolod Leonov。
马可·坎图(Marco Cantu)的第6章Delphi 2010手册“还涵盖了德尔菲的触摸和手势。
最终,您可以检查 克里斯·本森的博客 有关Delphi中有关触摸和手势支持的一些介绍性帖子和演示源代码。
当组件失去时,我似乎甚至无法携带虚拟键盘并将其隐藏。
在Delphi 2010和较新版本中 键盘组件 已经可用。为了使其可见或在更改焦点时将其隐藏,您可以处理 cm_focuschanged VCL消息,并在从某个类中得出控制焦点或满足某些特殊条件时使键盘可见。这是一个示例代码:
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;
上面的代码调用ActivateVirtualKeyboard每次更改焦点时。 MSG.Sender是获得重点的控制。 ActivateVirtualKeyboard检查控件是否是Tcustomedit后代(TEDIT或TMEMO等组件从此类别中降落)。如果控件是从tcustomedit派生的,则将虚拟键盘放在控件下方,并使键盘可见;否则,它隐藏了键盘。
在示例代码中,我们有一个编辑,备忘录和form1上的按钮。对于Edit1和Memo1,应可见键盘,并在Button 1焦点时隐藏。
键盘位置在屏幕上的计算并不是那么聪明,如果具有焦点的控件非常接近表单的底部边缘,键盘可能会太低。无论如何,将控件放在屏幕上是不超出问题的范围。