首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Delphi 2010 Tablet PC支持

Delphi 2010 Tablet PC支持
EN

Stack Overflow用户
提问于 2010-11-29 19:03:17
回答 1查看 2.9K关注 0票数 4

当我不得不为我的工作购买delphi时,我看到的一个大卖点是支持tablet pc的能力,现在我工作的公司的客户想使用tablet pc。我一直在努力寻找在tablet pc上使用delphi的例子,但我没有找到任何例子。有谁有使用它的经验吗?有任何类型的教程或示例吗?

我似乎甚至不能在组件获得焦点时带来虚拟键盘,而在失去焦点时将其隐藏起来。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-11-29 22:14:39

Delphi 2010为Delphi引入了一些漂亮的触摸和手势支持。

要获取更多信息,请访问EDN网站并查找CodeRage 4回放。有一个由赛皮·布鲁姆主持的题为“Hand on gestures in VCL”的会议。在CodeRage 5中,还有一个由Vesvolod Leonov主持的名为“新应用程序和当前项目的手势功能”的会议。

马尔科坎图的“Delphi2010手册”的第6章也涵盖了德尔福的触摸和手势。

最后,你可以在上找到一些关于触摸和手势支持的介绍性文章和演示源代码。

我似乎甚至不能在组件获得焦点时带来虚拟键盘,而在失去焦点时将其隐藏起来。

在Delphi2010和更新的版本中,触摸式keyboard component已经可用。要使其可见或在焦点更改时将其隐藏,可以处理CM_FOCUSCHANGED VCL消息,并在获得焦点的控件派生自某个类或满足某些特殊条件时使键盘可见。下面是一个示例代码:

代码语言:javascript
运行
复制
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可见,并在Button1具有焦点时隐藏。

计算键盘在屏幕上的位置并不那么聪明,如果具有焦点的控件非常接近窗体的底部边缘,则键盘可能会变得太低。无论如何,在屏幕上定位控件超出了您的问题的范围。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4303115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档