Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Delphi中实现文件名从资源管理器拖动到托管窗体或控件_Delphi_Drag And Drop_Delphi Xe2_Explorer - Fatal编程技术网

如何在Delphi中实现文件名从资源管理器拖动到托管窗体或控件

如何在Delphi中实现文件名从资源管理器拖动到托管窗体或控件,delphi,drag-and-drop,delphi-xe2,explorer,Delphi,Drag And Drop,Delphi Xe2,Explorer,在我的应用程序中,我无法从资源管理器中获取拖放操作。当我创建一个简单的VCL表单应用程序时,我可以在中使用演示代码,而且效果很好。我自己的drop目标是一个在框架和嵌入表单中深层对齐的控件,将工作演示例程移动到此表单不起作用。在将窗体和其他控件移到一边之后,我尝试在深嵌入的窗体上放置一个TPanel,以便在此处尝试演示代码:,这也不起作用。如果我排队 DragAcceptFiles(Handle,true); 在我的主窗体的FormCreate中,光标指示我可以接受文件,但同一行似乎不允许接收

在我的应用程序中,我无法从资源管理器中获取拖放操作。当我创建一个简单的VCL表单应用程序时,我可以在中使用演示代码,而且效果很好。我自己的drop目标是一个在框架和嵌入表单中深层对齐的控件,将工作演示例程移动到此表单不起作用。在将窗体和其他控件移到一边之后,我尝试在深嵌入的窗体上放置一个TPanel,以便在此处尝试演示代码:,这也不起作用。如果我排队

DragAcceptFiles(Handle,true);

在我的主窗体的FormCreate中,光标指示我可以接受文件,但同一行似乎不允许接收任何其他更深层控件的拖动文件。有人能告诉我可能遗漏了什么吗?谢谢。

正如Marjan(和其他人)在上面所评论的,这是一个Windows句柄问题。将“DragAcceptFiles()”移动到以后的事件(如FormShow)中解决了此问题。

正如Marjan(和其他人)在上面所评论的,这是一个Windows句柄问题。将“DragAcceptFiles()”移动到稍后的事件(如FormShow)中解决了问题。

链接到Pass
Panel1的
TPanel
演示。Handle
而不是表单的
Handle
。目标可以是任何
TWinControl
。正如@TOndrej所说,另外:由于控件属性的更改,句柄会一直被重新创建。您可能必须重写目标控件的CreateWindowHandle和DestroyWindowHandle,才能将其注册/撤销为删除目标。哦,在我的代码中,我使用了WindowHandle而不是Handle,但我认为这不会有任何真正的区别。@TOndrej是的,我在嵌入表单上放置了一个新的TPanel(Panel1)后,未经修改地使用了演示代码。“这应该有效吗?”玛扬:我永远不需要撤销。不过,面板演示应该已经正常工作了,当然?您链接到的
TPanel
演示通过了
Panel1.Handle
,而不是表单的
Handle
。目标可以是任何
TWinControl
。正如@TOndrej所说,另外:由于控件属性的更改,句柄会一直被重新创建。您可能必须重写目标控件的CreateWindowHandle和DestroyWindowHandle,才能将其注册/撤销为删除目标。哦,在我的代码中,我使用了WindowHandle而不是Handle,但我认为这不会有任何真正的区别。@TOndrej是的,我在嵌入表单上放置了一个新的TPanel(Panel1)后,未经修改地使用了演示代码。“这应该有效吗?”玛扬:我永远不需要撤销。不过,面板演示肯定会奏效吧?