【问题标题】:Translating OnClick to OnTouch (or something similiar)?将 OnClick 翻译成 OnTouch(或类似的东西)?
【发布时间】:2013-11-06 20:55:22
【问题描述】:

我是智能手机开发的新手。我正在使用 Delphi Xe5 创建一个可以移植到 Android 和 iPhone 的测试应用程序。

我有一个 FireMonkey 移动应用程序,其中主窗体上有一个 TlistBox。我希望用户在列表中选择一个项目,然后根据他们的选择以另一种形式显示一些信息。

我目前使用 ListBox 的 OnClick 事件来执行此操作

但是,在设备上进行测试时,似乎我必须多次触摸它(几乎就像用鼠标双击一样)。

我想使用某种触摸事件吗?手势?

如果是这样,我将如何获取所选项目的索引?

OnClick 事件示例

procedure TfrmProjects.lbxProjectsClick(Sender: TObject);
begin
 ShowMessage(IntToStr(lbxProjects.ItemIndex));
end;

编辑:

我查看了 GestureManager 并将其绑定到 ListBox 的 Touch 属性 Gesture Manager,但似乎找不到简单的 OnTouch

谢谢

【问题讨论】:

  • 当您触摸然后释放时是否会触发事件,因为OnClick 通常在释放鼠标按钮之前不会触发?

标签: android ios delphi firemonkey delphi-xe5


【解决方案1】:

对于TListBox,您只需使用OnChange 事件。不需要TGestureManager;通过点击对选择的更改会自动路由到那里:

procedure TForm1.ListBox1Change(Sender: TObject);
var
  Item: TListBoxItem;
begin
  Item := ListBox1.Selected;
  if Assigned(Item) then
    ShowMessage(Format('Item %d text is %s', [Item.Index, Item.Text]))
  else
    ShowMessage('No item selected');
end;

您可能想花一些时间了解为 FireMonkey Mobile 提供的示例。 (您可以从“开始”菜单的 XE5 项目中找到它们;有一个 Samples 链接可打开该文件夹。)有两个单独的文件夹很有帮助,FireMonkeyMobileMobileCodeSnippets;它们都包含一些很好的演示项目。 Embarcadero 的 docwiki 中的 Mobile Tutorials 文档中也有一些教程。

【讨论】:

  • 我会在今天晚些时候试一试并告诉你 - 谢谢肯
【解决方案2】:

如果你发现你必须在滚动后点击它两次,但如果没有滚动则不是,那么这是我之前记录的一个错误。根据我的经验,OnClick 应该可以工作,但会被滚动操作破坏。

请参考this bug,看看是否符合您的经验。

有趣的是,顺便说一句,几乎“反之亦然”bug reported here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-30
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    相关资源
    最近更新 更多