将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
链接可以打开文件夹。)有两个单独的文件夹, FireMonkeyMobile
和MobileCodeSnippets
; 他们都包含一些很好的演示项目。 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