2011-11-18 49 views
3

在FireMonkey框架中找不到任何文件樹組件(當然是跨平臺的)。任何人有任何想法或知道這樣的組件?聽起來像對我來說基本的東西。在FireMonkey中顯示文件系統/文件樹的任何組件?

我正在尋找一個簡單的「類似資源管理器」的樹視圖,如果它真的很漂亮,我可能會重新設置它或繼承並更改,這並不重要。想法?...

+3

您必須等待,我還沒有看到,閱讀或聽說過這樣一個組合,xe2不是非常成熟,所以要麼給它一些時間,要麼創建自己的... – ComputerSaysNo

回答

2

組員(開箱即用),但可以使用單元System.IOUtils這是工作在所有平臺上快速地實現它。

例如,爲了給你一個想法:

uses 
    System.IOUtils, FMX.TreeView, ... 

type 
    TForm2 = class(TForm) 
    tvPath: TTreeView; 
    procedure FormCreate(Sender: TObject); 
    private 
... 

procedure TForm2.FormCreate(Sender: TObject); 
var 
    sRoot : string; 
    sdaDrives: TStringDynArray; 
    sDrive : string; 
    tviDrive : TTreeViewItem; 
    osv  : TOSVersion; 
begin 
    if TOSVersion.Platform = pfMacOS then 
    begin 
    // Root's folders 
    sRoot  := '/'; 
    sdaDrives := TDirectory.GetDirectories(sRoot); 
    for sDrive in sdaDrives do 
    begin 
     tviDrive  := TTreeViewItem.Create(Self); 
     tviDrive.Text := sDrive; 
     tvPath.AddObject(tviDrive); 
    end; 
    sdaDrives := TDirectory.GetFiles(sRoot); 
    end 
    else 
    begin 
    // Root's folders 
    sRoot  := TDirectory.GetDirectoryRoot(ParamStr(0)); // you probably want to use TDirectory.GetLogicalDrives before this one... 
    sdaDrives := TDirectory.GetDirectories(sRoot); 
    for sDrive in sdaDrives do 
    begin 
     tviDrive  := TTreeViewItem.Create(Self); 
     tviDrive.Text := sDrive; 
     tvPath.AddObject(tviDrive); 
    end; 
    sdaDrives := TDirectory.GetFiles(sRoot); 
    end; 
    // files 
    for sDrive in sdaDrives do 
    begin 
    tviDrive   := TTreeViewItem.Create(Self); 
    tviDrive.Text  := ExtractFileName(sDrive); 
    tviDrive.Font.Style := [TFontStyle.fsItalic]; 
    tvPath.AddObject(tviDrive); 
    end; 
end; 

這僅僅是一種概念證明,因爲它是雙向的平臺。當然對,還是有一些工作要做...... 我已經使用System.SysUtils.TOSVersion向您展示另一個可能也可能有用的記錄...

+0

非常感謝!將等待幾個評論,如果沒有人會標記爲最佳答案。 –

+0

有沒有急着..把你的時間:) – Whiler