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

 ■前回のプログラムの説明


前回 紹介したツリーのプログラムの説明です。ウィンドウの作成(初期化)のプログラムの説明は省略しています。


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


ーー(ウィンドウの初期化と表示 = 省略) 


ーーフォルダの選択

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

フォルダ選択画面を表示する

もしフォルダ選択画面のキャンセルなら、手順から抜ける

フォルダ名は、フォルダ選択画面のフォルダ名

ツリー1をクリアする

ーー起動して、最初にフォルダを選択する時には必要有りませんが、

ーー起動したまま、次のフォルダを選択すると、

ーー前のフォルダの一覧がツリーに残ってしまい、

ーー新たに選択した内容と重複して表示されてしまうため、

ーーいったん、前のフォルダの一覧をクリアしておきます。


ツリー1を更新開始する

ツリー1に「[フォルダ名]」をフォルダ追加する

ーーフォルダ選択画面で選択されたフォルダ(のパス)を、ツリーに追加します。


ツリー1を更新終了する

ツリー1にフォーカスする

ーーユーザー(最初は あなた自身ですが)の手間を省くため、

ーーフォルダを追加した後、ツリーにフォーカスを移動させます。

ーー別に無くてもかまいませんが。


終わり


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

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

【フォルダ名たち】

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

【フォルダ名】

【子ノード】

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

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

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

繰り返し終わり


【ファイル名たち】

ファイル名たちは、(パス&「\*.txt」)のファイルの一覧

ーー【ファイル名たち】は、局所変数(私の根拠なき推測)なので、

ーーこの書き方は、ツリーの手順の中でしか使えません。

ーーここでは、追加するファイルの拡張子を指定(絞り込み)しています。

ーー「\*.txt」は、テキストファイル.txt だけを抽出しろ、という指定です。

ーー他の 複数の拡張子を指定する時は、たとえば次のように書きます。

ーー「\*.txt;*.doc;*.docx;*.xls;*.xlsx」 … テキストファイルと、

ーーOffice文書(Word・Excel)を抽出して表示します。

ーー「\*.*」 … 全ての拡張子のファイルを表示します。


【ファイル名】

ファイル名たちをファイル名にそれぞれ繰り返す

ノード:ファイル名を「image\document.ico」で追加する

ーー上記の拡張子のフィルターで抽出したファイルを、

ーーそれぞれのフォルダの下(中)に追加します。

ーー指定したフォルダの直下のファイルは、ツリーの下の方に、

ーー独立して表示されます。


繰り返し終わり

終わり


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

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

終わり


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

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

終わり


ーーファイルを開く

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

判定は、[正規表現:ツリー1の選択内容から「.*\.txt」を取り出したもの]

ーーツリーが選択された時、つまりカーソルが合った時に、

ーーそれがフォルダである時には、ファイルを開かないようにするために、

ーー拡張子を含んだファイル名かどうかを判定します。

ーー正規表現で取り出した結果が、配列の形で取得されます。

ーーそれを「判定」という変数に入れます。

ーー時々、拡張子の付いていないファイルもありますが、ここでは無視します。


もし、判定が「{}」でないなら

ーー拡張子が含まれていない時は、配列の要素が無し、

ーーつまり {} というふうに返されてきますので、

ーーそれ以外の場合だけ、次の手順に進みます。


一覧は、[フルパスで「[フォルダ名]」のファイルの全一覧]

ーー指定したフォルダ内の全てのファイルの一覧を取得します。

ーーサブフォルダ内のファイルも必要なため、「全一覧」と指定します。

ーーファイルを開くのに必要なため、「フルパスで」と指定しています。


配列は、一覧から「[ツリー1の選択内容]」を探す

ーー取得したファイルの全一覧から、ツリーの選択内容、

ーーつまり、選択されているファイル名を探します。

ーー結果は、配列の形で返されます。

ーー例:{3} ファイルの一覧の、3番目に、目的のファイルが

ーー存在することを示しています。


番号は、配列(1)

ーーほとんどの場合、ルートフォルダ内には、

ーー同じ名前のファイルは一つのことが多いので、

ーー上記の手順で取得される配列の個数は1個になります(※注)。

ーーそこで、配列の1番目の数字を[番号]という変数に入れます。


パス名は、一覧([番号])

ーーファイルの一覧(配列)の何番目のファイルなのかを指定して、

ーーそのフルパスを取得します。

ーー上記で挙げた例では3番目なので、全一覧の3番目のファイルの

ーーフルパスを取得することになります。


ファイル名は、「"[パス名]"」

ーーファイルパスに、半角/全角のスペース文字が含まれている場合に備えて、

ーー " " でパス名を括っておきます。

ーーなお、スペースが含まれていないファイル名も、これで問題ありません。


ファイル名を起動する

ーー選択したファイルの拡張子に関連付けされたアプリケーションを起動して、

ーーファイルを開きます。

ーーこのプログラムでは、テキストファイル .txt を指定しているので、

ーーテキストエディタが起動します。


もし終わり

終わり


閉じるボタンがクリックされた時の手順

自分を閉じる

終わり


終わり

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


※注:ルートフォルダ内の、別のサブフォルダに、同じ名前で内容の異なるファイルが存在する場合は、ちょっと面倒なことになります(例としては少ないかもしれませんが)。

なんとか、ツリーの中の手順で解決しようとしたのですが、なかなかうまくいかず、別のウィンドウを表示して対処する方法を考えました。

そのプログラムの例を、次回掲載したいと思います。


コメント

このブログの人気の投稿

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

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

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