gpt4 book ai didi

Delphi 2010 平板电脑支持

转载 作者:行者123 更新时间:2023-12-03 15:24:24 25 4
gpt4 key购买 nike

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

我似乎甚至无法在组件获得焦点时带上虚拟键盘并在失去焦点时隐藏它。

最佳答案

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

要获取更多信息,请访问 EDN网站并查找 CodeRage 4 重播。 Seppy Bloom 举办了一场题为“VCL 中的手势”的 session 。 CodeRage 5 中还有一个题为“新应用程序和当前项目的手势功能”的 session ,作者为 Vesvolod Leonov。

Marco Cantu 的“Delphi 2010 手册”第 6 章还介绍了 Delphi 中的触摸和手势。

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

I don't seem to be able even to bring a virtual keyboard when a component gain focus and hide it when it loses it.

在 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 获得焦点时键盘应该隐藏。

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

关于Delphi 2010 平板电脑支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4303115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com