现在有一个TListView,它的每个Item都与一个文件名关联。怎样拖动一个Item到资源管理器的文件夹就将与Item相关的文件拷贝过去呢?请知道的多多赐教,不知道的帮忙Up一下。谢谢。

解决方案 »

  1.   

    最起码你要得到文件的全路径的信息啊
    CopyFile(...,...,...);可以把一个Item的caption传递到函数里边
      

  2.   

    回复人: jinjazz(近身剪(N-P攻略)) ( ) 信誉:131  2005-02-24 17:02:00  得分: 0  
     
     
       那就用shelllistview
      
     
    两个问题:
    1、ShellListView怎么拖呀?我试了好久也试不出来。。
    2、如果显示的文件不是同一个文件夹下面的,或者一个文件夹下面的文件不显示全部的好像就不行了吧。
      

  3.   

    不就是在OnDragDrop事件里写复制文件的代码吗,至于文件的路径可以绑定在ListItem.Data里。
      

  4.   

    回复人: Rail100(每逢佳节倍思春) ( ) 信誉:100  2005-02-24 17:41:00  得分: 0  
     
     
       不就是在OnDragDrop事件里写复制文件的代码吗,至于文件的路径可以绑定在ListItem.Data里。
      
     
    请问:怎么绑定在ListItem.Data里呀?这里不是很懂。
      

  5.   

    ListItem.Data是个指针,建议你弄懂指针再用。先拿ListItem.Caption来代替吧。
      

  6.   

    对不起,刚才把您的意思理解错了,不过,按照我现在的理解,问题就更大了:第一:我已经说了“它的每个Item都与一个文件名关联”,所以就不存在将我的文件与Item关联的问题了,也就是说假设这个问题我已经解决了。第二:如果我没记错,OnDragDrop应该是其它控件在 触发这个事件的控件 上拖动时才会调用的吧,现在我是要移到资源管理器里去,似乎不可能在我的程序里用OnDragDrop事件吧。第三:这种方法您试过吗?如果试过且可行,请贴出代码,我愿意另开贴送分100。
      

  7.   

    首先ListView1的DrogModel属性要设为dmAutomobile才可拖动procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    var
      AnItem: TTreeNode;
      AttachMode: TNodeAttachMode;
      HT: THitTests;
    begin
      if not Assigned(TTreeView(Sender).Selected) then Exit;
      HT := TTreeView(Sender).GetHitTestInfoAt(X, Y);
      AnItem := TTreeView(Sender).GetNodeAt(X, Y);
      if (HT - [htOnItem, htOnIcon, htNowhere, htOnIndent] <> HT) then begin
        AttachMode := naAddChild;
        if htNowhere in HT then AttachMode := naAdd
        else if htOnIndent in HT then AttachMode := naInsert;
        TTreeView(Sender).Selected.MoveTo(AnItem, AttachMode);
      end;
    end;procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    begin
      Accept := Source is TTreeView;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      TreeView1.DragMode := dmAutomatic;
    end;
    这样行吗
      

  8.   

    这个例子是在TreeView中拖动item的例子,你看看有用处吗
      

  9.   

    我原本以为资源管理器也是你程序的一部分,如果你要把文件拖到WINDOWS的资源管理器,那么大概做2步吧:
    1,截获LISTVIEW的拖动事件,把鼠标变成拖文件的CURSOR。
    2,查找论坛,我之前见过有把文件拖到指定程序上执行的代码的,你查一下,照板煮碗写个复制文件的代码就是了。具体代码我也没写过,但我觉得解决问题最重要的是思路吧,你也可以说我眼高手低。
    分对我来说没什么用,我都4个三角了,混4个三角就是想能在提问题时放200分。
      

  10.   

    处理资源管理器接受文件的消息, DragAcceptFiles(handle,benabled)//这个API是接受文件的拖动的函数
      

  11.   

    To zhoujunyi(程序员):这是在自己的程序里拖动的吧,要拖到其他程序中去不同的
      

  12.   

    To Rail100(每逢佳节倍思春):  非常感谢您的思想。
      我查过以前的贴了,有很多类似或者同样的贴,但没有贴有具体的实现方法或代码。
    希望有相关资料的兄弟姐妹贴一下好吗?