0

我是智能手机开发的新手。我正在使用 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

谢谢

4

2 回答 2

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打开该文件夹的链接。)有两个单独的文件夹很有帮助,theFireMonkeyMobileMobileCodeSnippets; 它们都包含一些很好的演示项目。Embarcadero 的 docwiki 中的Mobile Tutorials文档中也有几个教程。

于 2013-11-06T23:30:32.520 回答
1

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

请参考这个错误,看看它是否符合您的经验。

有趣的是,顺便说一句,这里报告了一个几乎“反之亦然”的错误

于 2013-11-07T09:06:34.603 回答