这个操作与shell的关系相当密切,我一时说不清,建议大家到 MSDN 上找资料。
1.拖动源:
要允许 TMemo 中的文字被拖动出来,要重新写一下 TMemo ,如:
TMyMemo = class(TCustomMemo, IDropSource)
...
end;
并用 RegisterClipboardFormat 注册你拖动出来的数据类型,简单的可以注册成
“文本碎片”,资源管理器就可以接受,并存成文件(像从写字板中拖出的效果)
2.接受者:
你要想让资源管理器接受到的东西存成 .txt。就更麻烦了。
TMyTextDropTarget = class(TInterfacedObject, ... ,IContextMenu, IDropTarget, IDataObject)
...
end;
创建 COM Object 生成 .Dll 并注册给 Shell Folder .
IContextMenu 实现右键拖拽的Shell菜单扩展
IDropTarget 实现拖拽是否被接受
IDataObject 接收拖拽的数据
我最近也在找一些 Shell 编程的资料,尽是些 VC 的例子,Delphi的实在太少了。
等攒多了,再与大家分享吧.