ツリー(ツリービュー) その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 を指定しているので、
ーーテキストエディタが起動します。
もし終わり
終わり
閉じるボタンがクリックされた時の手順
自分を閉じる
終わり
終わり
──────────────────────────────
※注:ルートフォルダ内の、別のサブフォルダに、同じ名前で内容の異なるファイルが存在する場合は、ちょっと面倒なことになります(例としては少ないかもしれませんが)。
なんとか、ツリーの中の手順で解決しようとしたのですが、なかなかうまくいかず、別のウィンドウを表示して対処する方法を考えました。
そのプログラムの例を、次回掲載したいと思います。
コメント
コメントを投稿