|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2015/9/29 21:08:00 |
标题: |
如何实现TVirtualTreeView拖放节点到Windows资源管理器,实现自定义拷贝 |
浏览:969 |
|
加入我的收藏 |
楼主: |
请教各位,我看这个控件默认支持OLE拖放,试着做了从资源管理器中拖放文件过来,可以获得拖放的文件列表,结合自带的几个dragdrop事件,很好用。
但反向拖节点到资源管理器就比较困惑。主要是我要自定义拷贝方式,也就是说拖到资源管理放开鼠标的时候,需要获取其目录信息,然后我可以根据需要拷贝指定文件到该目录。
这个怎么实现?
----------------------------------------------
- |
作者: |
|
2015/9/30 8:29:11 |
2楼: |
GZ?good job??
----------------------------------------------
-
|
作者: |
|
2015/9/30 8:30:53 |
3楼: |
做过类似的软件,说实话,从软件拖放到资源管理器很复杂
----------------------------------------------
-
|
作者: |
|
2015/9/30 8:43:40 |
4楼: |
嗯,确实比较麻烦。 如果只是传递已知文件,完全模仿windows自身的拖放拷贝还简单些,但如果要在这个过程中实现自定义操作,势必需要提前获取目的地的路径,似乎windows并不直接支持这种操作。
----------------------------------------------
-
|
作者: |
|
2015/9/30 9:12:57 |
5楼: |
请学习 ZIP RAR 的做法。 当你拖出去的时候。 将文件复制到 TEMP 目录。 然后 设置 拖动目标的源文件就是你 TEMP目录下的文件。 然后 WINDOWS 就会自己完成拖动。但是这个过程会卡住你的目标和你的界面。
另一个做法。当拖出去的时候,你获取目标目录。然后结束拖动。 你自己复制文件到目标目录。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2015/9/30 17:38:38 |
6楼: |
@wang_80919 第一种不适用,卡顿和大量的临时文件很烦人,而且临时文件删除时机也比较麻烦。并且不适合首先需要用户确认操作的情况。这种实现起来倒是相对简单。
第二种是我目前研究的。遗憾的是,windows的拖放并不直接提供拖放目的的任何信息,无法直接获取目的地目录。现在我发现一个变通的做法,研究可否实现中。
----------------------------------------------
-
|
作者: |
|
2015/9/30 20:20:35 |
7楼: |
Windows右键(特别是粘帖功能)是怎么知道当前目录的?能不能从这个角度切入?
----------------------------------------------
只有偏执狂才能生存!
|
作者: |
sspeak (sspeak) |
★☆☆☆☆ |
-
|
盒子活跃会员 |
|
2015/10/5 10:28:09 |
8楼: |
CFSTR_FILECONTENTS
----------------------------------------------
-
|
作者: |
|
2015/10/5 13:10:09 |
9楼: |
我的思路: 拖放开始时刻生成一个临时文件,按照dragdrop的标准,实际对该临时文件进行拖放,Windows实际上是拷贝了这个文件,同时开启了文件系统的监控,对该临时文件名进行监控,一旦发现有创建(其实是windows拖放后拷贝),返回该路径。这样就获取了拖放目的地的路径了,然后在目的地删除该临时文件,并触发实际需要的下载或者其他操作。
这个思路我实验了,基本达到要求。
各位如果有更好的办法,希望不吝赐教。
----------------------------------------------
-
|
|