Firemonkey可能有拖放的bug

时间:2016-11-16 13:56:28

标签: android delphi firemonkey

我注意到使用OnDragOver事件和procedure TForm1.Button1DragDrop(Sender: TObject; const [Ref] Data: TDragObject; const [Ref] Point: TPointF); var t,d: TButton; begin T := TButton(Sender); D := TButton(Data.Source); T.data := T.data + D.data; Score(T.data); D.data := 0; T.isOk := true; end; procedure TForm1.Button1DragOver(Sender: TObject; const [Ref] Data: TDragObject; const [Ref] Point: TPointF; var Operation: TDragOperation); begin if ((Sender is TButton) and (Data.Source is TButton) and not(Sender = Data.Source) and (TButton(Sender).Text = TButton(Data.Source).Text) and (TButton(Data.Source).Text <> '')) then begin operation := TDragOperation.Move; end else begin operation := TDragOperation.None; end; end; 事件时出现了问题。看看这段代码:

OnDragDrop

此代码与您在下图中看到的表单相关:

enter image description here

这是一个网格布局,里面有一些按钮; Button1是左上角的按钮,所有其他按钮的事件OnDragOver和{{1}}指向Button1事件。例如look

当我在Windows(目标平台win32位)下运行程序时,我可以使用光标和鼠标拖放网格中的按钮。当我移动到android时出现问题,因为在我的手机上我无法拖放按钮。有什么想法吗?

这是一款使用Firemonkey构建的多设备应用。我想我必须为每个按钮声明DragDrop和DragOver事件,而不是引用Button1。这可能吗?

1 个答案:

答案 0 :(得分:3)

这不是错误,您可以在文档中找到原因here; DragDropService未在android平台中实现。

  

您可以在Windows和OS X中使用IFMXDragDropService

如果您想进行测试,我建议您尝试使用此行:

if TPlatformServices.Current.SupportsPlatformService(IFMXDragDropService) then
 begin
  //test code
 end;

为了确保您可以使用IFMXDragDropService服务,请先测试它是否受支持。