我是智能手机开发的新手。我正在使用Delphi Xe5创建一个可以移植到Android和IPhone的测试应用程序。
我有一个FireMonkey移动应用程序,我在主窗体上有一个TlistBox。我希望用户在列表中选择一个项目,然后根据他们在另一种形式中的选择显示一些信息。
我目前使用ListBox的OnClick事件来执行此操作
但是,在设备上进行测试时,似乎我不得不多次触摸它(几乎就像用鼠标双击一样)。
我想我会使用某种触摸事件吗?手势?
如果是这样,我如何获得所选项目的索引?
示例OnClick事件
procedure TfrmProjects.lbxProjectsClick(Sender: TObject);
begin
ShowMessage(IntToStr(lbxProjects.ItemIndex));
end;
编辑:
我查看过GestureManager并将其绑定到ListBox的Touch属性手势管理器,但似乎找不到简单的OnTouch
由于
答案 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
链接可以打开该文件夹。)有两个独立的文件夹,FireMonkeyMobile
和MobileCodeSnippets
;它们都包含一些很好的演示项目。在Embarcadero的docwiki的Mobile Tutorials文档中也有几个教程。
答案 1 :(得分:1)
如果你发现你必须在滚动后点击它,但是如果没有滚动则没有,那么这是我在回来时记录的一个错误。 OnClick
应该有效,但根据我的经验,它会被滚动操作破坏。
请参阅this bug,看看它是否符合您的体验。
有趣的是,除此之外,还有一个“反之亦然”bug reported here。