我的程序中有一个 ListView .我需要它能接受用户拖过来的文件.同时也能把里面的东东,拖出去.这样如何做?(30分)

  • 主题发起人 主题发起人 QSmile
  • 开始时间 开始时间
Q

QSmile

Unregistered / Unconfirmed
GUEST, unregistred user!
我的程序中有一个 ListView .我需要它能接受用户拖过来的文件.同时也能把里面的东东,拖出去.这样如何做?

是不是要重写一个 ListView 类?
 
1.显示接受光标
procedure TZ_hjgl.listview1DragOver(Sender, Source: TObject; X,Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := true;
end;
2.填写接受代码
procedure TZ_hjgl.GridDragDrop(Sender, Source: TObject; X, Y: Integer);
var
SdrLst,SrcLst: TListView;
begin
SdrLst := (Sender as TListView);
SrcLst := (Source as TListView);
...
end;
 
uses SHellAPI;
接受文件要 SHellAPI.DragAcceptFiles(self.Handle, True); DragQueryFile
 
难点不是把文件拖进来。而是把文件拖到 Explorer 中去如何办?
 
http://dev.csdn.net/develop/article/21/21115.shtm
type

TDragAndDropOLE=Class(TObject,IUnknown,IDropTarget)

基于COM的拖放技术 http://hubdog.csdn.net/Hubdog/comdd.htm
 
http://www.arrakis.es/~qkysoft/pdf_data/grahame/dnd.doc
hubdog 好像是翻这个的, 这里很详细,只不是英文的。
 
拖入比较容易.拖出就难了

还好,我在2ccc.com 上找到了一个控件.很不错的. DragDrop
 
多人接受答案了。
 

Similar threads

回复
0
查看
863
不得闲
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部