掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TreeViewにフォルダーをRunTimeでツリー状に表示する方法 (ID:149822)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
yTakeです。 FMX環境において、TreeViewにフォルダーをRunTimeでツリー状に表示する方法についてです。 ヘルプなどではサンプルプログラムを参照する様になっていますが、サンプルプログラムではデザイン時にTreeViewにツリー構造構築していて、ランタイムではツリーの展開・閉鎖の動作しか記述されていない様です。 インターネット上も検索しましたが、目ぼしい解説サイトが見つかりません。あっても、VCL用のサイトになっています。 VCLでも使い方は似ていると思われましたが、例えば、VCLでは”TTreeNode”と言うクラスを用いている様ですが、FMXでは”TTreeNode”は存在しない様です。 それでも、何とか、ツリー表示する様に作ってみましたが、思っている結果とは違っています。 "TreeView"と"ListBox"を配置し、"TreeView"にフォルダーツリーを表示して、ダブルクリックで指定されたフォルダーの内容を"ListBox"に表示する様にしたいと思います。 "ListBox"はカラムを3分割して、順にファイル名、作成日or修正日、ファイルサイズを表示させます。 また、1行毎に行頭に"CheckBox"を表示させたいと思います。 "TreeView"にフォルダーはリスト表示されていますが、ツリー状には見えていません。 ダブルクリックでそのフォルダー内容が"ListBox"に表示されていますが、全てのカラムに"CheckBox"が表示されてしまっています。 以下は、そのコードです。 ================================ procedure TForm2.FormCreate(Sender: TObject); var path : string; mask : string; option : TSearchOption; dirNames : TStringDynArray; dirName : string; i, j, k : Word; tv1_ : Array of TTreeViewItem; begin path := 'c:\'; mask := '*.*'; option := TSearchOption.soTopDirectoryOnly; dirNames := TDirectory.GetDirectories( path, mask, option ); SetLength( tv1_, Length( dirnames )); k := 0 ; for dirName in dirNames do begin tv1_[ k ] := TTreeViewItem.Create( self ); tv1_[ k ].Text := dirName; TreeView1.AddObject( tv1_[ k ]); inc( k ); end; end; procedure TForm2.TreeView1DblClick(Sender: TObject); var path : string; mask : string; option : TSearchOption; fileNames : TStringDynArray; fileName : string; i, j, k : Word; fs : TFileStream; tv1, tv2 : TTreeViewItem; tm : TDateTime; begin tv1 := TreeView1.Selected; mask := '*.*'; Option := TSearchOption.soTopDirectoryOnly; fileNames := TDirectory.GetFiles( tv1.Text, mask, Option ); k := 0 ; for fileName in fileNames do begin fs := TFileStream.Create( FileName, fmOpenRead ); tm := TFile.GetCreationTime( FileName ); ListBox1.Items.Add( FileName ); // ファイル名 ListBox1.Items.Add( IntToStr( fs.Size )); // ファイルサイズ ListBox1.Items.Add( DateTimeToStr( tm )); // ファイル作成日 fs.Free(); inc( k ); end; end; ================================ "TreeView"の"AlternatingRowBackground"プロパティをTrueにしています。 "ListBox"は"ShowCheckBoxes"プロパティをTrueにしています。 改善・改良すべき点など、ご教示願えればと思います。 よろしくお願いします。 当方、 DELPHI XE6 with FMX + Windows10 Pro です。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.