- ベストアンサー
Visual Basicでツリービューリストの項目数を増やすには?
VB4でツリービューコントロールを使ってリストを作成するとある程度以上のノード数になるとindex errorになります。 正確には数えていませんが、感覚的に200行ぐらいです。 この制限を外す方法はありませんか? よろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
そうですか・・・・ 元ソースの抜粋をチョット改造してあったのですね。 しかしVersionが古くとも一緒です。 エクスプローラはTreeViewを使用しています。Win95のエクスプローラと言えども、200個以上のフォルダは閲覧できないなんて制限はありませんよね。それと一緒のはずなのですが・・・ 現在公開してもらったサンプルソースでも200行ぐらいでエラーが起こるのですか?コード的には合ってるように見えます。 もしかしたら読み込んでるデータに不具合があるとか? 実際のエラーメッセージを正確に教えてもらえると、ちょっと参考になるかも?
その他の回答 (2)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
親となる"%"で始まる文字列のIndex値を、変数Jにて一時記憶している処理ですよね? 親となるNodeは[tree1]に追加されていて、子となるNodeは[tree2]に追加されています。 同じTreeView内でないと、親子の関係が結べないのではないのでしょうか?
補足
ご回答ありがとうございます。 すみません。元のツリーの名前が結構恥ずかしかったので一般的な名前に置き換えたのですが、その時に間違えたようです。両方ともtree1だと考えてください。 お手数ですが、もう一度診ていただけませんでしょうか。 OSはwin95でVB4です。古くてすみません。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
きちんと実験をしてませんが・・・ こちらの環境では問題なく20000件以上の登録ができました。 OS :WIN2KSP2 TOOL:VB6SP5 200行の制限なんてありませんよ。 コードに問題があると思われます。 Nodeを追加している付近のコードを公開できませんか?
補足
早速のコメントありがとうございます。 ご診断よろしくお願いします。 "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
お礼
ありがとうございました。 諦めずにがんばってみます。