CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

怎样判断鼠标是否拖动一个文件到一个控件上!!

楼主d_fang()2001-02-02 23:52:00 在 Delphi / VCL组件开发及应用 提问

主要要判断是否有文件和拖放怎样接受!!谢谢!! 问题点数: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

相关问题

  • 用鼠标拖动控件
  • 怎样禁止鼠标拖动改变CListCtrl控件每列的宽度 ?
  • 请问如何在OnMouseDown中区分拖动控件和鼠标双击
  • 如何实现Run time时期控件在窗体上随鼠标拖动?
  • vb中如何实现运行时候拖动鼠标改变控件大小?
  • 怎么实现在程序运行时拖动鼠标改变控件大小
  • 如何在form中实现鼠标拖动改变控件颜色
  • 在视图中用鼠标拖动直线控件的原理是什么?
  • 在视图中用鼠标拖动直线控件的原理是什么?
  • 判断鼠标是不是控件自身内?

关键词

  • 控件
  • 文件
  • 拖动
  • 拖放
  • dropfiles
  • dragqueryfile
  • 判断
  • msg
  • 参数
  • filename

得分解答快速导航

  • 帖主:d_fang
  • taxi

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo