代码之家  ›  专栏  ›  技术社区  ›  Sambatyon

Delphi2010平板电脑支持

  •  4
  • Sambatyon  · 技术社区  · 15 年前

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

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

    1 回复  |  直到 15 年前
        1
  •  7
  •   vcldeveloper    15 年前

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

    要了解更多信息,请转到 EDN 网站和寻找代码4重播。有一个会话名为“ VCL中的手势 “我是塞皮·布鲁姆。在法典第5章中还有一个题为 新应用程序和当前项目的指示功能 “维斯沃洛德列昂诺夫。

    马可·坎图的第六章 德尔福2010手册 “还包括德尔菲的触摸和手势。

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

    我好像连 当组件 获得焦点并在失去时隐藏它 它。

    在Delphi2010和更新版本中,触控功能 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。Sender是获得焦点的控件。ActivateVirtualKeyboard检查控件是否为TCustomEdit子体(像TEdit或TMemo这样的组件从此类派生)。如果控件是从TCustomEdit派生的,则它将虚拟键盘放在控件的正下方,并使键盘可见;否则,它将隐藏键盘。

    在示例代码中,我们在Form1上有一个edit、一个memo和一个按钮。对于Edit1和Memo1,键盘应该是可见的,当Button1有焦点时,键盘应该是隐藏的。

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