当我不得不购买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焦点时隐藏。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top