将OnClick翻译成OnTouch(或类似的东西)?

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

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

我目前使用ListBox的OnClick事件来做到这一点

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

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

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

示例OnClick事件

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

编辑:

我查看了GestureManager,并将其绑定到ListBox的Touch属性手势管理器,但似乎无法找到一个简单的OnTouch

谢谢


对于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中的移动教程文档中还有几个教程。


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

请参考此错误并查看它是否符合您的体验。

有趣的是,就像旁边一样,这里报道了一个几乎“反过来”的错误。

链接地址: http://www.djcxy.com/p/50629.html

上一篇: Translating OnClick to OnTouch (or something similiar)?

下一篇: Detecting single vs multiple selections in Delphi TStringGrid