• ベストアンサー

コントロール配列の動的配置について

ソース上でコントロール配列を動的に配置する場合の手法が解りません。 フォーム上に貼り付けられたコントロール配列を、動的に可変させるにはLOAD/UNLOADなどで良いようですが、1つめの要素(0)から動的に生成させる事は出来ないものでしょうか? ご存知の方いらっしゃいましたら、よろしく手ほどきのほどお願いいたします。

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

  • ベストアンサー
  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

試していませんが、これででょうでしょうか? --- Private myBtn(9) As VB.CommandButton Private Sub Form_Load() Dim i As Integer For i = 0 To 9 Set myBtn(i) = Form1.Controls.Add("VB.CommandButton", "cmdBtn" & i) Next End Sub

Juanjo
質問者

お礼

完璧に動作確認できました。 発想の転換ですね~。 後はReDim preserve あたりでいけそうですね。 本当に助かりました、ありがとうございます!

その他の回答 (4)

  • arata
  • ベストアンサー率49% (139/279)
回答No.5

確認しました。 やはり、起動後は、Indexはさわれませんね。 todo36さんの方法が最適のようです。 セットしておく先は、配列の変わりにCollectionを 使う手もありますね。

Juanjo
質問者

お礼

わざわざ確認して頂き、ありがとうございます。 Collectionも追々使用していくつもりです。 しかし、いろんな切り口があるんですね~。 VBも奥が深いと痛感してます。 ありがとうございました。

  • arata
  • ベストアンサー率49% (139/279)
回答No.4

現在VB6がさわれない環境にあるので、確認できないのですが(夜まで待っていただければ、自宅でチェックします)、 Dim objBtn As Object set objBtn = Form1.Controls.Add "VB.CommandButton", "cmdBtn" objBtn.Index = 0 として、objBtn.Index=0がエラーにならなければ、 Load cmdBtn(1) が通りそうな気がするのですが。 objBtn.Index=0がエラーになるのであれば、当然cmdBtn(0)がないので、Loadも出来ないと思います。

Juanjo
質問者

お礼

何回もありがとうございます。書き忘れましたがVB6です。 とりあえずTodo36さんのお答えで壁は越えられましたが、arataさん式の別なアプローチもありそうなので、締め切りは明日にしたいと思います。 このままだと、Set は通りましたが、やはり Load でエラーが出てしまいました。

  • arata
  • ベストアンサー率49% (139/279)
回答No.2

VB6では、Indexが0のコントロールを用意しなくても、動的にコントロールを追加することができます。 Controls.Add を調べてみて下さい。 これで追加したコントロールのIndexを0に設定することが出来るかどうかは、やってみてないので、わかりません。 VB5以前では、Indexが0のコントロールを用意しないと動的に生成させることはできません。

参考URL:
http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9812/vb6/
Juanjo
質問者

補足

ありがとうございます。 Form1.Controls.Add "VB.CommandButton", "cmdBtn" などとして、 Load cmdBtn(1) とした場合エラーになるので、最初からコントロール配列としての定義が必要???と思い質問させて頂きました。 フォーム上で配置したコントロール配列には、問題なく増減できるのですが・・・。

  • kou2000
  • ベストアンサー率29% (14/48)
回答No.1

 ただ単に一つめの要素から(0),(1)・・・のようにコントロール配列を順番に生成したいって事ですか?

Juanjo
質問者

補足

早速ありがとうございます。その通りです。 まっさらなフォームにコマンドボタン10個をソースリストから生成するような感じです。 単純なコントロールなら、Addメソードなどで良いのですが、このメソードでは btnMyButton(0) のような配列要素を生成できないようなので・・・。 引き続きご教授くださるとありがたいです。

関連するQ&A

専門家に質問してみよう