コントロールの動的追加について

解決


よし  2004-05-26 02:52:15  No: 83549  IP: [192.*.*.*]

コントロールの動的追加にてテキストボックスを配列で追加するとオブジェクト名が不正のエラーが出ます。配列にしなければエラーにならないのですが。

Private Sub Command1_Click()
    Set oText = Controls.Add("VB.TextBox", "txtHello(0)")
    With oText
        .Left = 200
        .Top = 100
        .Width = 2000
        .Height = 400
        .Text = "Hello World!"
        .Visible = True
    End With
End Sub

編集 削除
Say  2004-05-26 08:03:22  No: 83550  IP: [192.*.*.*]

識別名に「(」や「)」を含めることはできません。
半角のアルファベット・数字・アンダーバーで命名してください。
(ただし、1文字目数字は不可)
●よい例
txtHello0
txtHello_0
●わるい例
txtHello(0)
txtHello-0
0txtHello

編集 削除
seven  2004-05-26 11:06:02  No: 83551  IP: [192.*.*.*]

配列の動的追加は出来ないと思いますが

編集 削除
よし  2004-05-27 09:01:37  No: 83552  IP: [192.*.*.*]

ご回答ありがとうございます。
txtHello0  エラーにならないのですが、配列として対応させたいのですが。

編集 削除
魔界の仮面弁士  2004-05-27 09:12:23  No: 83553  IP: [192.*.*.*]

コントロール配列を動的に作成する場合は、Loadステートメントを使ってください。
Controls.Addでは、「コントロール配列」を作成することはできません。
(コントロールを作成し、それを配列に入れる事ならば可能ですが)

編集 削除
Say  2004-05-27 11:37:32  No: 83554  IP: [192.*.*.*]

Visual Basic 初心者掲示板
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi

「イsetで追加したものをクリックでイベントを発生させるにはどうすればいいのでしょうか?」
「control.add  変数のついて」
を参照してください。

編集 削除
吉野  2004-05-27 19:08:23  No: 83555  IP: [192.*.*.*]

コントロール配列は、魔界の仮面弁士さんが仰るとおり、Loadステートメントで作成できます。
サンプルを載せています。参考になれば、利用してください。

<フォーム>
テキストボックス(Text1(0))を貼り付けてください。
(インデックスを指定していないと、動的追加はできません。)
コマンドボタン(Command1)を貼り付けてください。

<コード>
以下のコードを貼り付けてください。
Private Sub Command1_Click()

    Unload Text1(1)

End Sub

Private Sub Form_Load()

    Load Text1(1)
    
    With Text1(1)
        .Left = 500
        .Top = 1000
        .Visible = True
    End With

End Sub

フォームロード時に、Text1(1)が新たに作成されます。
コマンドボタンをクリックすると、動的に作成したText1(1)がアンロードされます。
因みに、デザイン時で作成したText1(0)をアンロードできないので注意してください。

編集 削除
 2004-05-31 00:46:16  No: 83556  IP: [192.*.*.*]

吉野様サンプルありがとうございました。
理解できました。

編集 削除