2011-11-18 1 views
3

Impossible de trouver un composant arborescence de fichiers (multi-plateforme, bien sûr) dans l'infrastructure FireMonkey. Quelqu'un a une idée ou connaît un tel composant? Cela ressemble à une chose de base pour moi.Tout composant permettant d'afficher le système de fichiers/l'arborescence de fichiers dans FireMonkey?

Je suis à la recherche d'une simple arborescence "exploratrice", pas vraiment importante si elle est vraiment jolie car je peux probablement la relooker ou l'hériter et la changer. Idées? ...

+3

vous devrez attendre, je n'ai pas vu, lu ou entendu parler d'un tel comoonent, xe2 n'est pas très mûr, alors donnez-lui du temps ou créez le vôtre ... – ComputerSaysNo

Répondre

2

Il y a aucun composant (hors de la boîte), mais vous pouvez rapidement mettre en œuvre à l'aide de l'unité System.IOUtils qui travaille sur toutes les plateformes.

Par exemple, pour vous donner une idée:

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; 

Ceci est juste une preuve de concept, car il fonctionne sur la plate-forme .. Bien sûr, il y a encore du travail à faire ... Je ont utilisé System.SysUtils.TOSVersion pour vous montrer un autre enregistrement qui peut être aussi utile ...

+0

Merci beaucoup! Attendra quelques commentaires de plus, et si aucun ne marquera comme meilleure réponse. –

+0

Il n'y a pas de précipitation .. prenez votre temps :) – Whiler

Questions connexes