我用鼠标把一个文件拖进一个Form,
在刚开始拖入Form的时候(而不是放下,切记)怎样获得文件的名称呢?

解决方案 »

  1.   

    procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
    var
      FileCount: Integer;
      CFileName: array[0..MAX_PATH] of Char;
      WFileName : WideString;
    begin
      try
        FileCount:=0;
        while DragQueryFile(Msg.Drop,  FileCount,CFileName, MAX_PATH) > 0 do
        begin
          WFileName:=CFileName;
          if ExtractFileExt(cFileName)='.lnk' then
          begin
            ShowMessage('lnk file');
          end else
          begin
            ShowMessage('not lnk file);
          end;
          inc(FileCount);
          Msg.Result := 0;
        end;
      finally
        DragFinish(Msg.Drop);
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      DragAcceptFiles(Handle, True);
    end;你可以在Drop的时候判断拖动的文件是什么类型
      

  2.   

    postren(小虫) 
    ============================================
    你给的代码也只能在释放鼠标的时候(DragUp)给出消息啊
    我要的效果是在鼠标拖动文件进入Form的时候(DragOver)的时候显示信息啊
      

  3.   

    procedure TForm1.FormDragDrop(Sender, Source: TObject; X,
      Y: Integer);
    begin
      ///这里写代码
    end;
      

  4.   

    procedure TForm1.Button1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    beginend;
      

  5.   

    ahjoe(强哥)
    ========================
    你说的是不是空间拖动???
      

  6.   

    如果随便拖个文件经过你的form都要判断?
    估计没有人会那样做。。等待你的N+1次。。
      

  7.   

    WM_DROPFILES是系统消息,在这个消息中处理你要显示的文件信息
      

  8.   

    在目的控件中响应OnDragOver消息
      

  9.   

    我试了,但是什么消息都不会触发.
    我就在OnDragOver中什么也没做
    只是showmessage('a')
    但是什么消息也没发出