如何实现从listbox中拖拉一个文件名(带路径)到桌面,或从桌面拖拉一个文件到listbox,就能实现文件的复制功能?
解决方案 »
- 窗体上有 Label_1,Label_2,Label_3...Label_10,如何写循环才能遍历它们?
- 急:关于NMUDP的奇怪问题
- DELPHI6.0教材学习与讨论
- 怎样实现单击一个按钮,删除edit框中光标前的一个字符
- ADOQuery中的记录如何用多个字段排序?
- d5中有没有设置系统时间的函数?(我用VB一个语句就可以搞定,在Delphi只有用API.)
- 如何从XML文件中提取相应的数据?
- ****自制组件,请帮忙!****
- ShellListView的问题
- 在程序中动态创建的控件,什么怎么生成这个控件的事件
- 一个弹出窗口的问题?
- csdn,至今没解决的一个问题,给分了,高手请进~~~不胜感激
DragAcceptFiles
DragQueryFiles
DragQueryPoint
DragFinish
具体参数参考msdn
onDragDrop
只在程序内部生效
OnDragOver
OnDragDrop
OnEndDrag
事件,具体怎么做,再细想
procedure DragDropFiles(var msg:TMessage);message WM_DROPFILES;3)在窗体的创建过程中加入下列代码:
procedure TForm1.FormCreate(Sender: TObject)
begin
...
DragAcceptFiles(Handle,true); //允许拖拉文件到本窗口中
end;4)实现WM_DROPFILES消息处理过程:procedure TForm1.DragDropFiles(var msg:TMessage);
var
FileName: array[0..MAX_PATH] of char;
I,Sum : Integer;
begin
try
// 获得拖拉的文件数目,该功能由第二个参数决定
Sum:=DragQueryFile(msg.WParam,$FFFFFFFF,nil,0);
for I := 0 to Sum - 1 do
begin
//读取文件名
DragQueryFile(msg.WParam,i,FileName,SizeOf(FileName));
... //自己去实现了
end
finally
DragFinish(msg.WParam);
end;
end;OK了,运行程序看看,很爽,我刚学会,刚实现,呵呵
Var
p: Array[0..254] Of char;
i: word;
Fn:string;
Begin
Inherited;
i := DragQueryFile(Message.wParam, $FFFFFFFF, Nil, 0);
For i := 0 To i - 1 Do
Begin
DragQueryFile(Message.wParam, i, p, 255);
End;
Try
fn:=strPas(p);
If FileExists(fn) Then
begin
//处理文件件,文件名就是fn
end; Finally
DragFinish(HDROP(Message.WParam));
End;
End;我刚开始做的时候,忘了覆盖消息,半天出不来,呵呵。Procedure DragDropFiles(Var message: TMessage); Message WM_DropFiles;这句关键,这个过程接替了系统的WM_DropFiles消息Inherited;也不要忘了!