アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (5件)

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

この回答への補足

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

補足日時:2001/06/13 11:38
    • good
    • 0

VB6では、Indexが0のコントロールを用意しなくても、動的にコントロールを追加することができます。



Controls.Add

を調べてみて下さい。
これで追加したコントロールのIndexを0に設定することが出来るかどうかは、やってみてないので、わかりません。

VB5以前では、Indexが0のコントロールを用意しないと動的に生成させることはできません。

参考URL:http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/98 …

この回答への補足

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

補足日時:2001/06/13 13:14
    • good
    • 0

試していませんが、これででょうでしょうか?


---
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
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/06/13 15:21

現在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も出来ないと思います。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/06/13 15:34

確認しました。


やはり、起動後は、Indexはさわれませんね。

todo36さんの方法が最適のようです。

セットしておく先は、配列の変わりにCollectionを
使う手もありますね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/06/14 11:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!