• ベストアンサー

TreeVeiwの使い方についてです

お世話になります。 Visual Basic 2008EE初心者です。 質問は、TreeVeiwの使い方についてです。 ↓のように\で区切られたデータをTreeVeiw 表示させたいのですが…、ご教授のほど、 よろしくお願いいたします。 ちなみに\で区切られる数はデータに よって違います。 八百屋\果物\バナナ

質問者が選んだベストアンサー

  • ベストアンサー
  • pulsa
  • ベストアンサー率57% (34/59)
回答No.1

VB2008が手元にないので返答を控えていましたが、回答が付いてないようなので判る範囲で回答します TreeVeiwは各フォルダ一つ一つを個別のNodesとして扱い、それぞれの関係を親・子・孫…と関連付けることで、構成を表示します 具体的には、TreeVeiwのプロパティを表示し、その中のNodesを選択[…]を押して、TreeNode エディタを表示します ルートノードに八百屋を設定します ルートの追加を押してTextを『八百屋』とします 次に、子の追加を押して同じようにTextを『果物』とします そして、果物ノードを選択した状態で、子の追加を押して、果物ノードのさらに子ノード(八百屋から見て孫)にバナナを追加します コードで実装する場合は、いわゆるAddで追加して行きます TreeVeiwでの各ノードは、TreeNodeと言う型で宣言した変数を使用します   Dim rootNode As New TreeNode '親   Dim childNode1 As New TreeNode’子1   Dim childNode2 As New TreeNode’子2   Dim grandChildNode1 As New TreeNode’孫1   Dim grandChildNode2 As New TreeNode’孫2   Dim grandChildNode3 As New TreeNode’孫3 ’実際使うのは親・子1・孫1 のみ   '親ノードの作成   rootNode.Text = "八百屋"   '子1ノードの作成   childNode1.Text = "果物"   '孫1ノードの作成   grandChildNode1.Text = "バナナ" ’各ノードの関係をTreeVeiw1に登録する   '八百屋をTreeView1に登録   TreeView1.Nodes.Add(rootNode)   '果物を八百屋に登録   rootNode.Nodes.Add(childNode1)   'バナナを果物に登録   childNode1.Nodes.Add(grandChildNode1) 概念&追加方法はこんな感じです あとは、データをどこから拾うかによりますが、ListBoxなどから拾うのであれば、For Each を使うとかしてループ内部で宣言と追加を行えば、動的に実行させる事が可能です どこに書いてある項目を、どのノードに追加するかをコードで設定するイメージです ループ中では宣言の代わりに New を使用します 基本はここが判りやすかった http://vbdotnet.fc2web.com/vbnet/control/TreeView01.htm ノードの追加は状況が色々あるので、これと言った例を示すのが難しいですね このあたりに、コードで追加する方法が載っていますので、見てみてください http://www.atmarkit.co.jp/fdotnet/dotnettips/259treeviewadd/treeviewadd.html XP/VB2005 応用利くのであれば、試して見てください

icevain
質問者

お礼

pulsaさん はじめまして 丁寧な回答に感謝です。 基本はよくわかりました。 最終的にやりたかったことは 複数のフォルダパスを取得して treeview表示したかったのですが それには2次元の動的配列を使って やるのかなーって漠然と考えています。 試行錯誤してみます。 行き詰ったらまたよろしくお願いします。 有難うございました。

その他の回答 (1)

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.2

まだ、質問が閉まっていないようなので、補足します TreeVeiwはフォルダ構成を表示する為だけの物ではありません 例えば、家系図や、WEBサイトのリンク構成などを表としてまとめるような使い方も出来ます(フォルダ構成の表示に使うのが圧倒的に多いですけど) フォルダ構成に関して、現状すでにあるフォルダ構成を取得して利用(TreeVeiwに限らず)するのであれば、再帰呼び出しを使用します 概念としては、とあるフォルダを引数として渡すと、その中にあるファイルおよびサブフォルダを探すロジックを作り、そのロジック自身の内部で、サブフォルダを見つけた時、そのサブフォルダを引数にして自分自身を再度呼び出す事によって、最終的に全てのフォルダ構成が明らかになる と言う仕組みを利用します フォルダ構成を取得する方法としては、また、プログラムのテクニックの一つとしては古典に分類されるような方法で、ソートやサーチに次ぐくらい歴史のある手法らしいですが、とっても応用範囲が広く、プログラムに必要な『プログラム的考え方』を身に付ける良い題材なので、この機会に取得する事をお勧めします また、VB上でファイルやフォルダを取り扱うには『FileSystemObject』を使いこなせる必要があります Scripting.FileSystemObject はその名の通り Object なので、Object思考(あえて指向ではない)を学ぶ教材として最適です ファイルやフォルダを探す、コピーする 削除する など これらを行う時、必ず必要になりますからね Scripting.FileSystemObject 再帰呼び(処理) とでも検索すれば、結構な数がヒットするでしょう VBに固執せず、VBA(主にエクセル)などについて説明しているサイトも参考になる情報が含まれています また、そういうサイトの方が、VBよりVBAの方が若干初心者よりなので、説明が丁寧で判りやすい傾向があります 別な題材の説明の一部ですが、今回必要とするScripting.FileSystemObjectや再帰呼びでの必要な事のほぼ全てが乗っている http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub05_110_080.html ちょっと脱線しますが、VBのサイトを探していて、なかなか欲しい情報が得られなかった時、Delphiのサイトで探していた情報を得る事が出来たと言う経験があります 関係ないと思いつつも、一応見てみる事で、仮にVBでは不可能、Delphiであれば可能と記されていた所で、なるほどVBでは出来なくても、別言語であれば可能なんだな という事が、わかるだけでも結構な儲けですよね Exit For できる、とでも言いますか それ以上、有るかわからないVBの情報を探し求めなくて済みますのもね こういう事で、VB開発者としてではなく、プログラマとして力が付くように思います つい長くなってしまいました 最後に、ひとつ 一応の解決を見たので有れば、質問を締め切って下さい まだ、思うような情報が得られていないのであれば、その事について補則して再度ご質問下さい では

icevain
質問者

お礼

ありがとうございました

関連するQ&A

  • メールの本文にテーブルのデータを書き込む

    ご質問させて頂きます。 access2000、ADOを使用しています。 Aテーブルに以下のようなデータがあります。 1 りんご 2 バナナ 3 みかん このデータを使って 以下のようなメールをお送りしたいのです。 ----------------- 件名 果物について 本文 お世話になっています。 果物について以下の通りです。 1 りんご 2 バナナ 3 みかん ----------------- ご教授して頂けたら幸いです。

  • リストボックスについて

    PHPをはじめて間もないのですが、質問します DB(MySql)のテーブルを使用してリストボックスの 選択肢をさせるようにしたいのですが、 同じ1つのリストボックスで選択するようにします テーブル CodeNo 商品名   分類 0001  バナナ   果物 0002  みかん   果物 0003  ピーマン  野菜 0004  トマト   果物 0005  もも    果物 0006  にんじん  野菜 のようなデータがあるとします (1)選択肢は分類のデータを表示します    果物    野菜 (2)(1)で選択された分類の商品名を選択肢にします    果物選択したとする    バナナ    みかん    トマト    もも (3) (2)で選択されたCodeNo,商品名を表示する    トマトを選択したとする 0004  トマト がテキストボックスに表示されるようにします。 以上のようなことをPHPですべてするにはどのようにすれば よいのか、ご教授いただけませんでしょうか? よろしくお願いいたします。    

    • 締切済み
    • PHP
  • Excel2003で困っています

    以下の表から投票数が多い順に果物を並べた別表を作りたいと思います。投票数はLarge関数を使い、果物はvlookup関数を使おうと考えましたが、vlookupでは検索値が重複していると最初に一致した果物を表示するようで、2のバナナが2つ出てしまいます。 重複した検索値がある場合に、合致する行をすべて表示するにはどうしたらよいでしょうか?  A   B 1 投票数 果物  2 0   りんご 3 2   バナナ 4 3   みかん 5 2   梨 6 5   ぶどう 7 0   スイカ

  • 初心者です。Access レポートで下記のように作成したいのですが、な

    初心者です。Access レポートで下記のように作成したいのですが、なんか重複データで引っかかってしまいました。 ※(1)作成したいレポート 分類   名前     地名    小計   合計   総合計 -------------------------------------------------- 果物   りんご   青森   100    170   1070               千葉    50               山梨   20      バナナ   千葉   450    450      みかん   栃木   300     450                     150 ---------------------------------------- ワイン   AAAA   ドイツ   500    800    1000            イタリア   300       BBBB    ドイツ   200   200 ↓↓   ↓↓   ↓↓   ↓↓   ↓↓  ↓↓ ※(2)クエリで下記のようなデータがあります。 分類   名前     地名    小計   合計   総合計 -------------------------------------------------- 果物    りんご    青森    100    170    1070 果物   りんご    千葉    50    170    1070 果物   りんご   山梨   20   170   1070 果物   バナナ   千葉   450    450    1070 果物   みかん   栃木   300   450    1070 果物   みかん    栃木   150   450    1070 -------------------------------------------------- ワイン  AAAA  ドイツ   500    800    1000 ワイン  AAAA  イタリア  300   800   1000 ワイン  BBBB  ドイツ   200   200   1000 ↓↓   ↓↓   ↓↓   ↓↓    ↓↓    ↓↓ (1)レポートで      フィールド[分類]:重複非表示 [はい]      フィールド[名前]:重複非表示 [はい]      フィールド[合計]:重複非表示 [はい]      フィールド[総合計]:重複非表示 [はい]にすると下記の様になってしまいしますが、 分類   名前     地名    小計   合計   総合計 -------------------------------------------------- 果物   りんご   青森   100    170   1070               千葉    50               山梨   20      バナナ   千葉   450    450      みかん   栃木   300                     150 ---------------------------------------- ワイン   AAAA   ドイツ   500    800    1000            イタリア   300       BBBB    ドイツ   200   200 ↓↓   ↓↓   ↓↓   ↓↓   ↓↓  ↓↓ 結果的に上記(1)の様にしたいです。名前のフィルドにバナナ、みかんなどの合計はそれぞれ450と450を表示させたいのですが、たれかその方法は教えて頂けないでしょうか。よろしくお願いします。

  • PHP CSVから条件にあう行を3行取りだしたい

    以下のようなCSVがあったとします。(data.csv)価格で降順にソートしてあります。 line0,line1,line2 1,ぶどう,200(円) 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) 5,みかん,50(円) ある果物を紹介するページがあったとして、 そのページには、他のオススメの果物として、csvからデータを読み込み、 その果物よりも安いもの3件を表示するという仕組みを作ろうと思っています。 ただ、安いものが3件無かった場合に、それよりも高いが、それに近い価格の果物を あわせて3件まで紹介したいと思っています。 今作っているPHPは以下の通りです。 ページに紹介されている果物=($fruits),価格=($price) です。 <?php $Data=file('/data.csv'); $j=0; for($i=0;$i<sizeof($Data);$i++){ $line=explode(",",$Data[$i]); #表示ページの果物とCSVのline1が違い、価格が$priceよりも小さいものを3件まで表示 if($fruits != line1 and $price >= line2 and $j<3 ){     echo $line1 $line2.' </br>'; $j++; } } ?> で、価格が低いものを3件まで表示することはできました。 ぶどう200円のページであれば、 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) が表示されるようにはできました。 りんご100円のページには、 4,バナナ,80(円) 5,みかん,50(円) の2件のみが表示されています。 上記りんごのように、安いものが3件なかった場合に、 それより価格が高いが一番近いものから順に3件になるまでデータを 取りだしたいと思っています。 今回のりんごであれば、リンゴより安い、バナナ80円、みかん50円、 それに加え、リンゴより高いがリンゴの価格に一番近い、なし150円を表示させたいです。 みかんの場合には、安いものがないため、高いがみかんに近いものから3つ 2,なし,150(円) 3,りんご,100(円) 4,バナナ,80(円) を表示させたいです。 一体どうしたら良いのか、検討も付かず、教えて頂きたいです。 よろしくお願い致します。

    • ベストアンサー
    • PHP
  • エクセルのピボット(文字)

    エクセル初心者です。 ピボットで表を作成したいのですが、文字を 表示させることができません。 Aのようなデータを使用してBを作成したいです。 A:元データ 日付     果物   入れ物 1月1日  りんご ダンボール 1月2日  バナナ 買い物袋 1月2日  りんご 買い物袋  1月3日  メロン ダンボール B:作成したい表 入れ物  果物  日付 ダンボール  りんご 1月1日          メロン  1月3日 買い物袋   バナナ 1月2日          りんご  1月2日 ピボットで作成しようとすると、果物のところが0や1と ”データの個数”であらわされてしまいます。 フィールドの設定で「値」に変更すればよいと友人から聞いたのですが 「値」がないです。 どのようにしたら文字を表示させることができるか、 教えてください!!

  • FRQUENCY関数と条件設定

    FREQUENCY関数なんですが、さらに条件をつけるやり方を教えてください。 名称 入数(個) いちご 2 いちご 12 いちご 13 いちご 3 みかん 3 バナナ 14 いちご 16 いちご 18 ・・・・と続くデータを 各果物にわけて、~10個、~15個、~20個の度数分布を・・・というのはどうしたらいいでしょうか。 例えば全部いちごで、入数の度数分布なら {=FRQUENCY(B2:B8、C1:C3)} にしてるだろうと思うんですけど いちご、バナナ、みかん と分けて度数分布を…という場合はどうすれば?という質問です。 よろしくお願いします。

  • エクセル関数 頻度順に並べる方法は?

    excel関数についてですが 度数の多い順に並べる方法はありますか? 例えば、果物名前がたくさん並んでいるデータを考えます。 1 りんご 2 バナナ 3 なし 4 りんご 5 メロン 6 もも 7 ぶどう 8 りんご 9 ぶどう 10 バナナ 11 りんご 12 ぶどう このデータから、度数の多い順に並べたいです。 [欲しい結果] 1 りんご 2 ぶどう 3 バナナ ...といった具合です。 同率で並ぶ場合は含めなくてもよいですが。。。 できれば、データ列を作らずに関数式で表示させたいのです。

  • 渋柿どこかに売ってませんか?

    干し柿を作りたいと思っています。どこか果物屋や八百屋などで、渋柿を売っているお店をご存じの方はいらっしゃいませんか? ちなみに大田区在住です。

  • エクセルでの集計に関して

    こんにちは。いつもお世話になっております。 例えばですが、以下のようなCVSのデータがあります。 (エクセルで開けます。) 昇順 降順に変更可能です。 これが、何週間分かあり、タブがあって日にちごとに見れますが、 30件ほどの品目の、200件ほどのデータが50件ずつにのみ表示されます。 4/1分データ    品名   売り上げ数   りんご1  100    りんご2  200    みかん1  300    みかん2   400    バナナ1  500             次の50件→ -------------------------------------------- 4/2分データ    品名   売り上げ数   りんご1  1000    りんご2  2000    みかん1  3000    みかん2   4000    バナナ1  5000   バナナ2  6000   アボガド  7000   いちご   8000     次の50件→      ↓続く これを、エクセルで下記のようにしたいのです。 ********************************************** ID  品名    4/1分集計 4/2集計  4/3集計  4/4集計  4/4集計~~ A   りんご1  100   1000    300 B   りんご2  200   2000    400  C   みかん1  300   3000    500 D  みかん2   400   4000    600 E   バナナ1  500    5000    700 D  バナナ2        6000    800 E  アボガド       7000    900 F  いちご       8000    1000 日にちによって当然、新たな項目、アボガドやいちごがあったりします。みなさんでしたら、最速で一番簡単に行う為にどうしますか? ちょっといそいでてお知恵をどなたか下さい! ご教授下さいますようお願い致します。

専門家に質問してみよう