Q&A

  • 디렉토리 열기 (컴포 없이 간단히 여는 방법..)
컴포 쓰지 않고

간단히

디렉토리 경로만 트리 모양으로 뜨게 하는

방법이 있었는뎅...

도무지 생각이 나질 않네요....

누가점 도와주세요.....
2  COMMENTS
  • Profile
    몽상 2003.06.24 02:10
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ActiveX, ShlObj;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        ListBox1: TListBox;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation
    {$R *.dfm}

    procedure TForm1.Button1Click(Sender: TObject);
    var
      pShell, ShellFolder: IShellFolder;
      pidl: PITEMIDLIST;
      PMalloc: IMalloc;
      sName: string;
      EnumIDList: IEnumIDList;
      pceltFetched: ULONG;
      lpName: TStrRet;
      slDirectories: TStringList;
    begin
      slDirectories := TStringList.Create;
      try
        SHGetDesktopFolder(ShellFolder);
        SHGetSpecialFolderLocation(0, CSIDL_DRIVES, pidl);
        SHGetMalloc(PMalloc);
        ShellFolder.BindToObject(pidl, nil, IID_IShellFolder, Pointer(pShell));
        pShell.EnumObjects(0,SHCONTF_FOLDERS, EnumIDList);
        while EnumIDList.Next(1,pidl, pceltFetched) = S_ok do
        begin
          pceltFetched := 0;
          lpName.uType := 0;
          pShell.GetDisplayNameOf(pidl, SHGDN_FORPARSING, lpName);
          sName := lpName.pOleStr;
          slDirectories.Add(sName);
        end;
        ListBox1.Items.Assign(sldirectories);
      finally
        pMalloc._Release;
        pMalloc := nil;
        slDirectories.Free;
      end;
    end;

    end.

    이것 말인가요?

    참고로 이 소스는 김영대님 사이트에 있는 소스입니다..
  • Profile
    나옹이 2003.06.24 02:19