TShellTreeView每次启动时都要去读软驱,实在讨厌,并且还没有源代码,不知道大家显示文件夹时都用什么控件,可别告诉我用 Win31 里面的控件!

解决方案 »

  1.   

    我觉得在比较可悲的是要解决TShellTreeView 不去读软驱竟然在各大网站都有人提问,但是没有一个解决的办法,是因为我们的技术太低还是因为大家都不愿意公布他掌握的技术呢?郁闷!!!
      

  2.   

    TreeView 就挺好呀,自己处理你要参考吗?要的话我把实例给你贴出来
      

  3.   

    我自己修改了一个下d7中的shellctrl,你将它重新编译并安装到delphi中就可以了:procedure TCustomShellTreeView.InitNode(NewNode: TTreeNode; ID: PItemIDList; ParentNode: TTreeNode);
    var
      CanAdd: Boolean;
      NewFolder: IShellFolder;
      AFolder: TShellFolder;
    begin
      AFolder := TShellFolder(ParentNode.Data);
      NewFolder := GetIShellFolder(AFolder.ShellFolder, ID);
      NewNode.Data := TShellFolder.Create(AFolder, ID, NewFolder);
      with TShellFolder(NewNode.Data) do
      begin
        NewNode.Text := DisplayName;
        if FUseShellImages and not Assigned(Images) then
        begin
          NewNode.ImageIndex := GetShellImage(AbsoluteID, False, False);
          NewNode.SelectedIndex := GetShellImage(AbsoluteID, False, True);
        end;
        if NewNode.SelectedIndex = 0 then NewNode.SelectedIndex := NewNode.ImageIndex;
        //to**************
        if NewNode.Level<=2 then begin
          NewNode.HasChildren:=true;
        end
        else begin
          NewNode.HasChildren := SubFolders;
          if fpShared in Properties then NewNode.OverlayIndex := 0;
        end;
        if (otNonFolders in ObjectTypes) and (ShellFolder <> nil) then
          NewNode.HasChildren := GetHasSubItems(ShellFolder, ObjectFlags(FObjectTypes));
      end;  CanAdd := True;
      if Assigned(FOnAddFolder) then FOnAddFolder(Self, TShellFolder(NewNode.Data), CanAdd);
      if not CanAdd then
        NewNode.Delete;
    end;我用它做的一个程序:
    http://www.tonixsoft.com/index.php?mmenu_id=3&smenu_id=0005
      

  4.   

    D7 更是烂,我在 D7 下处理 GIF 图片居然会陷入一个死循环,所以不得已放弃 D7 。
    不知道大家有没有现成的控件?
      

  5.   

    tonylk(tony) 老兄的方法非常好,谢谢!