ツリー(ツリービュー) その1

 ツリービューは、プロデルでは「ツリー」と呼ばれます。もちろん、フォルダのツリービューなどでおなじみの、あの「ツリービュー」です。もちろん、動作や操作も同じです。


■準備


ツリーを動作させるためには、部品の中で使われるアイコンの画像ファイルが必要になります。ツリービューを操作して、フォルダを開いたり閉じたりした時に、「ドキュメント プラス」「example マイナス」というようにガイドされますが、この プラス・マイナス は、ここで使われる画像を読んでいます。したがって、この画像を使わないと、画面上でも、音声でも、フォルダの開閉を確認することが出来ません。

画像ファイルは、プロデルのインストールフォルダの中にあります。普通にインストールしていれば、次のパスの例になります。


"C:\Program Files\Produire\サンプル\image"


ツリーを使うプロデルのファイルと同じ場所に、「image」というフォルダを作成し、上記のフォルダの中から、ツリーの表示と動作に必要な画像ファイルをコピーしておきます。

※面倒くさかったら、「image」のフォルダごとコピーしてもOKです。


●必要なファイル

document.ico … ファイルに使用されるアイコン 

folder_close.ico … フォルダが閉じた時のアイコン( + ) 

folder_open.ico … フォルダが開いた時のアイコン( - ) 


■プログラムの例


今回は、特定のフォルダの中のフォルダの一覧を、ツリーに追加するプログラムを紹介します。そして、次回は、より実用的な、フォルダの中のファイルも一緒に追加するプログラムを紹介することにします。

※ここでは、例として[マイドキュメント]の中のフォルダを表示させています。たぶん、ここはフォルダの数が多いため、表示に時間がかかると思います。F5キーでプログラムを実行してから、少し時間をおいて下さい。

※ドライブ(C:\ など)や、「C:\Program Files」「C:\Windows」などのフォルダは追加することが出来ないようです。


──────────────────────────────

「Produire.WinControl.dll」を利用する

ウィンドウ1を表示する

待機する


ウィンドウ1とは

ウィンドウを継承する


はじめの手順

初期化する

ツリー1を更新開始する

ツリー1に「[マイドキュメント]」をフォルダ追加する

ツリー1を更新終了する

終わり


初期化する手順

ーーこの手順は自動生成されたものです。編集しないでください

この内部領域大きさを{245、364}に変える

この内容を「ウィンドウ1」に変える


ラベル1というラベルを作る

その内容を「フォルダ」に変える

その位置と大きさを{13、13、40、12}に変える


ツリー1というツリーを作る

その項目高さを14に変える

その位置と大きさを{13、29、219、278}に変える


ボタン1というボタンを作る

その内容を「閉じる」に変える

その位置と大きさを{157、326、75、23}に変える


終わり


ーーツリーにフォルダを追加する

[ノード]に、[パス]を、フォルダ追加する手順

【フォルダ名たち】

フォルダ名たちは、パスのフォルダの一覧

【フォルダ名】

【子ノード】

フォルダ名たちをフォルダ名にそれぞれ繰り返す

子ノードは、ノード:フォルダ名を「image\folder_close.ico」で追加したもの

子ノードに、パス&「\」&フォルダ名をフォルダ追加する

繰り返し終わり

終わり


ツリー1が折りたたみ後時の手順

イベントの対象のアイコンを「image\folder_close.ico」に変える

終わり


ツリー1が展開後時の手順

イベントの対象のアイコンを「image\folder_open.ico」に変える

終わり


ボタン1がクリックされた時の手順

自分を閉じる

終わり


終わり

──────────────────────────────


■プログラムの説明


──────────────────────────────

「Produire.WinControl.dll」を利用する

ウィンドウ1を表示する

待機する


ウィンドウ1とは

ウィンドウを継承する


はじめの手順

初期化する

ツリー1を更新開始する

ーーツリーのように、表示に比較的 時間のかかる部品の場合は、

ーーこの「更新開始」を使います。一時的に部品の中の表示を抑制します。


ツリー1に「[マイドキュメント]」をフォルダ追加する

ーーマイドキュメントの中のフォルダを追加します。

ーー他のフォルダを、パスで指定する時は、末尾の「\」は不要です。

ーー(例) ツリー1に「D:\example」をフォルダ追加する


ツリー1を更新終了する

ーー二つ 上の行で開始した、表示の更新=抑制を解除します。


終わり


初期化する手順

ーーこの手順は自動生成されたものです。編集しないでください

この内部領域大きさを{245、364}に変える

この内容を「ウィンドウ1」に変える


ラベル1というラベルを作る

その内容を「フォルダ」に変える

その位置と大きさを{13、13、40、12}に変える


ツリー1というツリーを作る

その項目高さを14に変える

ーー表示する項目(フォルダ)の高さを指定しています。

ーー既定値は、14(ピクセル)になっています。


その位置と大きさを{13、29、219、278}に変える


ボタン1というボタンを作る

その内容を「閉じる」に変える

その位置と大きさを{157、326、75、23}に変える


終わり


ーーツリーにフォルダを追加する

[ノード]に、[パス]を、フォルダ追加する手順

ーー「ノード」とは、ここでは「ツリーの要素」というような意味です。

ーー「パス」は、追加するフォルダ名を代入する変数です。

ーーここでは、[マイドキュメント]が代入されています。

ーーまとめると、[パス]の中のフォルダの一覧を、

ーーツリーの要素に追加する手順をここから下に書きますよ、

ーーという意味になります(…たぶん)。


【フォルダ名たち】

フォルダ名たちは、パスのフォルダの一覧

【フォルダ名】

【子ノード】

ーーここは、おそらく「局所変数」を宣言しているのではないかと

ーー私は推測しているのですが、私の推測はあてにならないので、

ーー鵜呑みにしないよう注意。

ーー実際にプログラムを書く時は、そのままコピペして下さい。


フォルダ名たちをフォルダ名にそれぞれ繰り返す

ーー「フォルダ名たち」は配列で、「フォルダ名」は、その要素です。

ーー要素の数だけ、下ノ命令文を繰り返せ、という意味になります。


子ノードは、ノード:フォルダ名を「image\folder_close.ico」で追加したもの

ーー指定したフォルダ(このプログラムでは[マイドキュメント])の、

ーー直下にあるフォルダを、まずツリーに追加します。


子ノードに、パス&「\」&フォルダ名をフォルダ追加する

ーー追加したフォルダ内のサブフォルダを、そのフォルダの中に追加します。

ーーこの段階では、直下のフォルダは閉じた状態なので、

ーーサブフォルダは見えません(表示されていません)。


繰り返し終わり

終わり


ツリー1が折りたたみ後時の手順

イベントの対象のアイコンを「image\folder_close.ico」に変える

ーーユーザーがツリーを操作して、フォルダを折りたたんだ時に、

ーーフォルダのアイコンの画像を「+」に変えろ、という命令です。


終わり


ツリー1が展開後時の手順

イベントの対象のアイコンを「image\folder_open.ico」に変える

ーーユーザーがツリーを操作して、フォルダを開いた時に、

ーーフォルダのアイコンの画像を「-」に変えろ、という命令です。

ーー同時に、自動的に、サブフォルダが展開されます。


終わり


ボタン1がクリックされた時の手順

自分を閉じる

終わり


終わり

──────────────────────────────


■参考


リファレンス > ウィンドウ部品集 > ツリー

                    http://rdr.utopiat.net/docs/reference/wincontrol/treeview.htm


リファレンス > コントロール部品 > ツリー項目

http://rdr.utopiat.net/docs/reference/wincontrol/treenode.htm


※インターネットの「お気に入り」をツリーに読み込むプログラムの例が、サンプルの中にあります。こちらもどうぞ。

"C:\Program Files\Produire\サンプル\ウィンドウ部品\お気に入りツリー.rdr"


コメント

このブログの人気の投稿

■アクセシブルな開発環境「日本語プログラミング言語・プロデル」の紹介

ドキュメント検索 と 掲示板

「キュー」と「スタック」 その2