如何将文件从 Explorer Shell 拖放到 Delphi 应用程序中的 VirtualTreeView 控件中?
Mike Lischke 在 VirtualTreeView 中提供了广泛的拖放支持,我正在使用 TVirtualStringTree,它有一些拖放事件,但我不知道如何让它接受 shell 拖放将 Windows 资源管理器 shell 中的一些文件添加到我的应用程序中。我想在将文件拖到放置控件上时加载它们。
我尝试使用 Anders Melander 的第三方代码集来处理拖放,但因为 VirtualTreeView 已经将自身注册为放置目标,所以我无法使用它。
编辑:我找到了一个简单的解决方法:关闭 VT.TreeOptions.MiscOptions 中的 toAcceptOLEDrop。 如果有人知道如何使用 VirtualTreeView 而不使用第三方 OLE-shell-drag-drop 库并使用其广泛的 OLE 拖/放支持来提取从 Shell 拖入的文件名列表,那就太酷了。
There is extensive drag and drop support in VirtualTreeView by Mike Lischke, and I am using TVirtualStringTree, which has some on-drag-and-drop events, but I can not figure out how to get it to accept a shell drag-and-drop of some files from the windows explorer shell, into my application. I want to load the files, when they are dragged onto the drop control.
I tried using a third-party set of code from Anders Melander, to handle drag and drop, but because VirtualTreeView already registers itself as a drop target, I can't use that.
edit: I found a simple workaround: Turn off toAcceptOLEDrop in VT.TreeOptions.MiscOptions.
It would be cool if anybody knows a way to use VirtualTreeView without using a third party OLE-shell-drag-drop library and using its extensive OLE drag/drop support to extract a list of filenames dragged in from the Shell.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
我的实现(与 Delphi 2010 配合得很好。必须添加 ActiveX、ShellApi 来使用编译):
My implementation (Works very well with Delphi 2010. Must add ActiveX, ShellApi to uses to compile):
我使用此方法来捕获(接收)从资源管理器拖入 TWinControl 的文件。
您可以在您的控件上进行测试。在标准 TTreeView 中工作正常。
将 ShellAPI 添加到使用中。
在私人部分:
在您表单的 OnCreate 处:
这两个过程如下:
我希望这对您有用。
问候。
I use this method to capture (receive) files dragged into a TWinControl from explorer.
You can test it on your control. In a standard TTreeView work fine.
Add ShellAPI to uses.
At private section:
At OnCreate of your form:
And the two procedure are these:
I hope that this are usefull for you.
Regards.