怎样判断鼠标是否拖动一个文件到一个控件上!!
主要要判断是否有文件和拖放怎样接受!!谢谢!! 问题点数:20、回复次数:6Top
1 楼sundayboys(sunboy)回复于 2001-02-03 00:07:00 得分 0
呵呵,我来说两句,当拖动某个对象经过一个控件时,这个控件将产生ONDRAGOVVER事件。这个控件能否接收这个对象,取决于ONDRAGOVER句柄的ACCEPT参数,参数为TRUE时,当拖动的对象在控件上释放时将触发ONDRAGDROP事件,另外ONDRAGOVER的SOURCE参数代表拖放的对象(可以判断是否是你要的文件类型)。剩下的你可以根据你的需要编写具体代码了。Top
2 楼d_fang()回复于 2001-02-03 02:22:00 得分 0
我说的是怎样判断外部拖放到控件的文件!!Top
3 楼d_fang()回复于 2001-02-03 17:01:00 得分 0
这到底应该怎样作哦Top
4 楼taxi(当时明月在,曾照彩云归)回复于 2001-02-03 21:48:00 得分 20
请在窗体上放一个Pagecontrol控件
uses Shelapi;
//有文件拖放时的消息
procedure DropFiles(var msg:TMessage);message WM_DropFiles;
procedure Appmsg(var msg:TMsg;Handled);
procedure Openfile(filename:string);
TabSheet;TTabSheet;
NewEditor:TRichEdit;
procedure TfrmMain.DropFiles(var msg:TMessage);var
i,count:integer;
FileName:array[0..255] of char;
begin
i:=-1; //i为-1为查询拖放的文件个数
//返回拖放文件个数
count:=DragQueryFile(msg.WParam,i,FileName,SizeOf(FileName));
for i:=0 to Count-1 do
begin
//获取第i个文件
DragQueryFile(msg.Wparam,i,FileName,SizeOf(FileName));
OpenFile(FileName)
end;
DragFinish(msg.Wparam);
end;
procedure TfrmMain.AppMsg(var msg:TMsg;Handled:boolean);
var
i,count:integer;
FileName:array[0..255] of char;
begin
//如果应用程序是最小化,发送的消息是落下文件
if (IsIconic(Handle)) and (msg.message=wm_DropFiles) then
begin
i:=-1;
count:=DragQueryFile(msg.WParam,i,FileName,SizeOf(FileName));
for i:=0 to Count-1 do
begin
DragQueryFile(msg.Wparam,i,FileName,SizeOf(FileName));
OpenFile(FileName);
end;
DragFinish(msg.Wparam);
end;
end;
procedure openfile(filename:string);
begin
TabSheet:=TTabSheet.Create(nil);
TabSheet.Caption:=ExtractFileName(filename);
TabSheet.Pagecontrol:=PageControl1;
NewEditor:=TRichEdit.Create(self);
with NewEditor do
begin
Parent:=TabSheet;
Align:=alClient;
Lines.LoadFromFile(Filename);
end;
end;
procedure TForm1.Create(...);
begin
//使窗体接受文件的拖放,
DragAcceptFiles(Handle,true);
//窗体最小化时也可接受拖放
DragAcceptFiles(Application.Handle,true);
end;
Top
5 楼taxi(当时明月在,曾照彩云归)回复于 2001-02-03 21:49:00 得分 0
http://ywbtaxi.home.sohu.comTop
6 楼Nicrosoft(奈软)回复于 2001-02-04 12:07:00 得分 0
我也写过这样的组件,是一个listbox,你可以到我的主页下载源代码:
http://www.sunistudio.com/download/df_lb.zip
(有说明)
或者看我写的文章:
http://www.sunistudio.com/asp/sunidoc.asp?act=-2&article=113
《自制支持文件拖放的VCL组件》 Top




