Delphi 2010平板电脑支持

时间:2010-11-29 11:03:17

标签: delphi delphi-2010 touch gestures tablet-pc

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

当组件获得焦点时,我似乎甚至无法携带虚拟键盘,当它丢失时隐藏它。

1 个答案:

答案 0 :(得分:7)

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

要获得有关它的更多信息,请转到EDN网站并查找CodeRage 4重播。 Seppy Bloom有一个题为“ 在VCL中手势 ”的会议。同样在CodeRage 5中,Vesvolod Leonov有一个名为“ 新应用和当前项目的手势功能 ”的会议。

Marco Cantu的第6章“ Delphi 2010手册 ”也涵盖了Delphi中的触摸和手势。

最后,您可以查看Chris Bensen's weblog有关Delphi中触摸和手势支持的一些介绍性帖子和演示源代码。

  

我似乎无法带来   组件时的虚拟键盘   在失败时获得焦点并隐藏它   它

在Delphi 2010及更新版本中,已启用触控功能keyboard component。要在焦点更改时使其可见或隐藏,您可以处理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,键盘应该是可见的,当Button1有焦点时,键盘应该是隐藏的。

屏幕上键盘位置的计算并不是那么聪明,如果具有焦点的控件非常接近表单的下边缘,键盘可能会太低。无论如何,在屏幕上定位控件超出了你的问题的范围。