2010-01-25 2 views

답변

1

소스를 수정해야한다고 생각하지 않습니다. 재고 TShellTreeView는 TCustomTreeView의 하위 항목이므로 TreeView와 같이 항목을 추가 할 수 있습니다.

아래의 코드는 이 아니며,이 아니라고 생각했지만 테스트를 시작했을 수 있습니다. ShellTreeView 맨 위에 실행 파일 이름으로 표시 이름과 실행 파일의 경로로 경로가있는 항목을 삽입합니다.

uses 
    shlobj, activex, shellapi; 

function InsertToSTV(STV: TShellTreeView; Pos: Integer; 
    Path, DisplayName: string): Boolean; 
var 
    ShellFolderInterface, NodeShellFolder: IShellFolder; 
    ItemIDList: PItemIDList; 
    CharsParsed, Attributes: ULONG; 
    wPath: PWideChar; 
    Node: TTreeNode; 
    FileInfo: TSHFileInfo; 
begin 
    Result:= False; 
    if (SHGetDesktopFolder(ShellFolderInterface) = NOERROR) then begin 
    wPath:= StringToOleStr(Path); 
    if wPath <> nil then 
     try 
     if ShellFolderInterface.ParseDisplayName(0, nil, wPath, CharsParsed, 
      ItemIDList, Attributes) = NO_ERROR then 

      ShellFolderInterface.BindToObject(ItemIDList, nil, IID_IShellFolder, 
       NodeShellFolder); 
      Node := STV.Items.Insert(STV.Items[Pos], DisplayName); 
      Node.Data := TShellFolder.Create(nil, ItemIDList, NodeShellFolder); 

      if STV.UseShellImages and not Assigned(STV.Images) then begin 
      SHGetFileInfo(PChar(ItemIDList), 0, 
          FileInfo, 
          SizeOf(FileInfo), 
          SHGFI_PIDL or SHGFI_SYSICONINDEX); 
      Node.ImageIndex := FileInfo.iIcon; 
      SHGetFileInfo(PChar(ItemIDList), 0, 
          FileInfo, 
          SizeOf(FileInfo), 
          SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_OPENICON); 
      Node.SelectedIndex := FileInfo.iIcon; 
      end; 
     finally 
      SysFreeString(wPath); 
     end; 
    end; 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    InsertToSTV(ShellTreeView1, 
      0, 
      ExtractFilePath(Application.ExeName), 
      ExtractFileName(Application.ExeName)); 
end; 
1

질문에 엄격하게 답변하려면 ShellCtrls.pas를 수정하려면 코드 편집기에서 열어서 원하는대로 변경 한 다음 앱으로 컴파일하십시오.

하지만 그렇게 할 것을 강력히 권장합니다. 변경을 수행하는 가장 좋은 방법은 하위 구성 요소를 만드는 것입니다. 이것이 OOP 세계에서 일이 이루어지는 방식입니다.

기존 클래스를 수정하는 대신 하위 클래스를 만듭니다.

관련 문제