-PR-
解決済み

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

  • 困ってます
  • 質問No.89537
  • 閲覧数1336
  • ありがとう数6
  • 気になる数0
  • 回答数5
  • コメント数0

お礼率 41% (5/12)

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

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

  • 回答No.3
レベル13

ベストアンサー率 59% (729/1235)

試していませんが、これででょうでしょうか?
---
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

お礼率 41% (5/12)

完璧に動作確認できました。
発想の転換ですね~。
後はReDim preserve あたりでいけそうですね。
本当に助かりました、ありがとうございます!
投稿日時 - 2001-06-13 15:21:35
-PR-
-PR-

その他の回答 (全4件)

  • 回答No.1
レベル8

ベストアンサー率 29% (14/48)

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

お礼率 41% (5/12)

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


  • 回答No.2
レベル11

ベストアンサー率 49% (139/279)

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

Controls.Add

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

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

お礼率 41% (5/12)

ありがとうございます。
Form1.Controls.Add "VB.CommandButton", "cmdBtn"
などとして、
Load cmdBtn(1)
とした場合エラーになるので、最初からコントロール配列としての定義が必要???と思い質問させて頂きました。
フォーム上で配置したコントロール配列には、問題なく増減できるのですが・・・。
投稿日時 - 2001-06-13 13:14:28
  • 回答No.4
レベル11

ベストアンサー率 49% (139/279)

現在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

お礼率 41% (5/12)

何回もありがとうございます。書き忘れましたがVB6です。
とりあえずTodo36さんのお答えで壁は越えられましたが、arataさん式の別なアプローチもありそうなので、締め切りは明日にしたいと思います。
このままだと、Set は通りましたが、やはり Load でエラーが出てしまいました。
投稿日時 - 2001-06-13 15:34:23
  • 回答No.5
レベル11

ベストアンサー率 49% (139/279)

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

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

セットしておく先は、配列の変わりにCollectionを
使う手もありますね。
お礼コメント
Juanjo

お礼率 41% (5/12)

わざわざ確認して頂き、ありがとうございます。
Collectionも追々使用していくつもりです。
しかし、いろんな切り口があるんですね~。
VBも奥が深いと痛感してます。
ありがとうございました。
投稿日時 - 2001-06-14 11:27:46
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ