• ベストアンサー

Visual Basicでツリービューリストの項目数を増やすには?

VB4でツリービューコントロールを使ってリストを作成するとある程度以上のノード数になるとindex errorになります。 正確には数えていませんが、感覚的に200行ぐらいです。 この制限を外す方法はありませんか? よろしくお願いします。

  • natai
  • お礼率34% (8/23)

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

そうですか・・・・ 元ソースの抜粋をチョット改造してあったのですね。 しかしVersionが古くとも一緒です。 エクスプローラはTreeViewを使用しています。Win95のエクスプローラと言えども、200個以上のフォルダは閲覧できないなんて制限はありませんよね。それと一緒のはずなのですが・・・ 現在公開してもらったサンプルソースでも200行ぐらいでエラーが起こるのですか?コード的には合ってるように見えます。 もしかしたら読み込んでるデータに不具合があるとか? 実際のエラーメッセージを正確に教えてもらえると、ちょっと参考になるかも?

natai
質問者

お礼

ありがとうございました。 諦めずにがんばってみます。

その他の回答 (2)

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.2

親となる"%"で始まる文字列のIndex値を、変数Jにて一時記憶している処理ですよね? 親となるNodeは[tree1]に追加されていて、子となるNodeは[tree2]に追加されています。 同じTreeView内でないと、親子の関係が結べないのではないのでしょうか?

natai
質問者

補足

ご回答ありがとうございます。 すみません。元のツリーの名前が結構恥ずかしかったので一般的な名前に置き換えたのですが、その時に間違えたようです。両方ともtree1だと考えてください。 お手数ですが、もう一度診ていただけませんでしょうか。 OSはwin95でVB4です。古くてすみません。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.1

きちんと実験をしてませんが・・・ こちらの環境では問題なく20000件以上の登録ができました。 OS :WIN2KSP2 TOOL:VB6SP5 200行の制限なんてありませんよ。 コードに問題があると思われます。 Nodeを追加している付近のコードを公開できませんか?

natai
質問者

補足

早速のコメントありがとうございます。 ご診断よろしくお願いします。 "test.ini"というファイルから1行ずつ読み込んで 先頭文字が"%"なら親ノードとして以降の文字列を登録、それ以外なら その子ノードとして全部の文字列を登録、というつもりで作りました。 150行ぐらいのファイルならOKですが、200行ぐらいでエラーです。 「実行時エラー35600 インデックスが指定可能範囲をこえています」と 出ます。 よろしくお願いします。 Private Sub Form_Load() Dim s As String Dim nd As Node Dim i, j As Integer i = 0 j = 0 Open "test.ini" For Input As #1 Do If EOF(1) Then Exit Do Line Input #1, s i = i + 1 If Left$(s, 1) = "%" Then Set nd = tree1.Nodes.Add(, , , Right$(s, Len(s) - 1), 0) j = i Else Set nd = tree2.Nodes.Add(j, tvwChild, , s, 0) End If Loop Close #1 End Sub

関連するQ&A

  • C# ツリービューの使い方

    現在、Microsoft Visual C# 2008 Express Editionでプログラムを作成しているのですが、ツリービューの使い方がよくわかりません。 具体的には、ツリービューとリストビューを左右に並べて、ツリービューのノードをクリックしたときに、その子ノードをリストビューに表示したいと考えています。 そこで、 ツリービューのNodeMouseClickイベントで foreach ( TreeNode child in this.treeView1.SelectedNode.ChildNodes ) { //リストにノードを表示する } と記述したのですが、 「'System.Windows.Forms.TreeNode' に 'ChildNodes' の定義が含まれておらず、型 'System.Windows.Forms.TreeNode' の最初の引数を受け付ける拡張メソッドが見つかりませんでした。using ディレクティブまたはアセンブリ参照が不足しています。」 というエラーが発生しました。 これを解決するにはどうすればいいのでしょうか?また、私が実装しようと考えている機能を、ツリービューとリストビューを併用した方法以外でより効率的にかけたりしますか? C#に詳しい人、回答よろしくお願いします。

  • VB6.0ツリービューについて

    現在、VB6.0で開発をしております。 その中で、ツリービューを使用しています。 で、ツリービューのノードを設定してある状態で、ユーザがクリックしてノードのひとつを選択するのではなく、プログラムからあるひとつのノードを選択状態にするにはどうすればよいでしょうか? ご教授いただけますでしょうか。よろしくお願いします。

  • ツリービューのノードを閉じた時のイベント

    VB6でツリービューを利用したプログラムを組んでいます。ツリービューのイベント処理において、ツリービューのノードを展開した時には、Expandイベントで取得することが可能だと思うのですが、ノードを閉じたときのイベントは、取得することができるのでしょうか?

  • ツリービューについて

    いつも参考にしています。 今回初めてVBで開発することになりました。 ツリービューの部分で詰ってしまいました。 【内容1】 2階層のツリーで下位階層(子)が選択されているときだけ実行したい処理があります。 現在選択しているノードが上位階層(親)か下位階層(子)か判断できるような関数などあるのでしょうか? 【内容2】 現在、画面上のツリービュー表示項目をダブルクリックすると値を更新できてしまうのですが、更新不可にできないでしょうか? どちらも初歩的なことなのかも知れませんが、検索しても分からなかったんです。 どうぞアドバイスお願いします。 VBは6.0です。

  • 【vb6】リストビューの複数の項目の削除

    お世話になります。 vb6のリストビューについて質問があります。 リストビューでコントロールキーやシフトキーを押して複数項目を選択したあと 選択された任意の項目だけを削除するというロジックを書きたいと思っています。 ですが、どのようにしたら、例えば1~4行目まである内の 2,4行目だけを削除できるのかが全く解りません。 .selectitem.indexだと選択した最後の行(2,4行を選択したら4行目)が インデックスに帰るので特定の行を取得できずお手上げ状態です。 解りづらい説明で申し訳ありませんが、 どうか教えてください。よろしくお願いします。

  • ツリービューの使い方が・・・

    VBのカスタムコントロールはほとんどさわったことがないので、ぜんぜんわからないです。 初心者っぽい質問で申し訳ないのですが、プロセスとプロセスがもっているスレッドを、プロセスID&スレッドIDをキーにツリー構造を持たせたいのですが、ツリービューのツリーへのアクセスのしかたがわかりません。 MSDNライブラリが壊れているようで、ヘルプが出ないのです。 新しいMSDNライブラリ入れてから、トラブル続き。 TreeView1.Nodes.Add , , "キー", "値" TreeView1.Nodes.Add , , "キー\サブキー", "値" じゃなさそうみたいです。 かといってそれぞれのノードが小枝への参照をもっているわけでもないし、小枝を追加するメソッドをもっているわけでもないし。 単純に小枝への追加のしかたが知りたいだけなんですけど・・・。 だれか教えてください。

  • ASP.NETのチェックボックスつきツリービュー

    開発環境 ・WindowsXP ・Framework4.0 ・VB.NET ASP.NETのWebアプリで、親ノードをチェックすると子ノードもチェックされる ツリービューを作成したいと思っています。 通常のチェックボックスのようにAutoPostBackプロパティをTrueにして 選択イベントハンドラの設定をして実現しようとしていたのですが、 ツリービューはAutoPostBackプロパティを公開していないため、困っています。 良い方法があれば、ご回答よろしくお願いいたします。

  • C++Builder 6でツリービュー(初心者)

    C++Builder 6のツリービューで、任意の位置に ノードを挿入するにはどうすれば良いのでしょうか? indexを使って任意の位置の削除はできるのですが、・・・ どなたかお願いします。

  • ArrayListとツリー・リストビューの関連付けをするには

    前回質問したArrayListの要素を増やすには?の続きの質問です。 サンプルプログラムにもうひとつ配列の配列管理をするarcollectionMailを publicで作ろうとしたのですがエラーが出てしまいました。 // 問題のコード -> ";" が必要ですの構文エラーが出る ArrayList arCollectionMail = new ArrayList() { collectionMail[RECIVE],collectionMail[SEND],collectionMail[DELETE]}; これはどこが間違っている構文なのでしょうか? またツリービューにフォルダ(子ノード)を作成した時の新規配列と ツリービューの関連付けと新規ノードをクリックした時の反応の 追加方法も詳しく教えて頂けるとありがたいです。 開発環境はVS2005(C#)、.NET2.0です。 今回はソースコードをホームページに掲載しておきますので 回答の参考にしていただけるとありがたいです。 http://angelteatime.punyu.net/files/listsample.zip

  • VC6++のツリービューについて

    VC6++のツリービューについて質問させていただきます。 ツリービューで以下のようなリストを作成した場合、リストをクリックした時に文字色もくしは、文字の背景色を変更したいと考えております。何かよい方法があればお教え頂ければと思います。 よろしくお願いいたします。 【ツリービューのイメージ】 下のようなリストを作成後、”きゅうり”をクリックしたら、”きゅうり”の文字列の色が変わり、”みかん”をクリックしたら、”みかん”の文字列の色が変わるイメージです。 野菜  |   ― きゅうり  |     ― レタス 果物  |   ― みかん  |   ― ブドウ  

専門家に質問してみよう