将OnClick转换为OnTouch(或类似的东西)?

时间:2013-11-06 20:55:23

标签: android ios delphi firemonkey delphi-xe5

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

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

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

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

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

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

示例OnClick事件

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

编辑:

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

由于

2 个答案:

答案 0 :(得分:3)

对于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文档中也有几个教程。

答案 1 :(得分:1)

如果你发现你必须在滚动后点击它,但是如果没有滚动则没有,那么这是我在回来时记录的一个错误。 OnClick应该有效,但根据我的经验,它会被滚动操作破坏。

请参阅this bug,看看它是否符合您的体验。

有趣的是,除此之外,还有一个“反之亦然”bug reported here