【发布时间】:2014-07-23 17:52:57
【问题描述】:
我有一个带有 TListView 的表单。我加载了一些项目,它显示正常。 如果我点击 (OnClick) 一个项目,我可以显示第二个表单,其中包含项目详细信息和一些附加选项。
但是,如果我向右滑动(以激活“删除”按钮),我会收到 OnClick 事件,并显示详细信息表单。当我关闭详细信息表单(或使用“返回”按钮)时,TListView 现在显示了删除按钮。
那么,简短的版本是如何在 Swipe 完成时阻止 OnClick 事件触发?
我尝试添加一个标志,并在 OnDeleteChangeVisible 和/或 OnGesture 中设置该标志,但该标志似乎从未被设置,并且当我在调试模式下运行时,我没有看到这些事件触发。
var isDelete: Boolean
procedure TfrmTaskList.lvTaskListDeleteChangeVisible(Sender: TObject;
AValue: Boolean);
begin
if (AValue = True) then
isDelete := True
else
isDelete := False;
end;
procedure TfrmTaskList.lvTaskListGesture(Sender: TObject;
const EventInfo: TGestureEventInfo; var Handled: Boolean);
begin
if (EventInfo.GestureID = sgiRight) then
begin
isDelete := True
end
else
begin
isDelete := False;
end;
end;
我们将不胜感激任何帮助、建议和资源。谢谢
【问题讨论】:
-
略有不同的问题,但最终是相同的问题。见这里:stackoverflow.com/questions/24681940/…
-
感谢@ThisGuy 的回复。它是相似的(我可以将该解决方案作为权宜之计来实现),但我认为点击和滑动之间的时间差非常短,并且难以可靠地计算。此外,如果您按住足够长的时间,长按会在鼠标抬起之前触发。我现在不需要长按,但如果能找到一个更可靠的解决方案来利用所有可用的手势,而不仅仅是两个,那就太好了。
标签: android mobile firemonkey delphi-xe6