在实现拖放文件和目录中,怎样实现象系统的资源管理器那样右键选则多个对象拖放?

解决方案 »

  1.   

    procedure WMDropFiles(var Msg: TWMDropFiles);message WM_DROPFILES;
    利用此消息!!
      

  2.   

    type
      TMainForm = class(TForm)
    ...
        procedure DropFiles(Var Msg:TWmDropFiles);Message WM_DROPFILES;
        procedure CreateMDIChild(const Name: string);
    end;var
      MainForm: TMainForm;
    implementationuses ShellAPI;
    procedure TMainForm.CreateMDIChild(const Name: string);
    var
      Child: TMDIChild;
    begin
      { create a new MDI child window }
      Child := TMDIChild.Create(Application);
      Child.Caption := Name;
      if FileExists(Name) then Child.Memo1.Lines.LoadFromFile(Name);
    end;procedure TMainForm.DropFiles(Var Msg:TWmDropFiles);
    var
     nFiles,i:integer;
     FileName:String;
    begin
     //调用DragQueryFile函数得到文件数
     nFiles := DragQueryFile(Msg.Drop,$FFFFFFFF,nil,0);
     try
       for i := 0 to nFiles -1 do
       begin
       //设置文件名长度
       SetLength(FileName,80);
       //得到文件名
       DragQueryFile(Msg.Drop,i,PChar(FileName),80);
       //初始化文件名
       FileName := Pchar(FileName);
       //打开文件
       CreateMDIChild(FileName);
       end;
     finally
       //拖放结束
       DragFinish(Msg.Drop);
     end;
    end;
      

  3.   

    Shell Control Pack这个最强大的