[リストへもどる]
一括表示

投稿時間:2003/12/01(Mon) 18:23
投稿者名:ねこ
Eメール:
URL :
タイトル:
ボタン
動的にフォームにボタンを貼り付けても
フォーム上のどのボタンを押したかとかわかりますか?

投稿時間:2003/12/01(Mon) 18:43
投稿者名:これ
URL :
タイトル:
Re: ボタン
> 動的にフォームにボタンを貼り付けても
> フォーム上のどのボタンを押したかとかわかりますか?
コントロール配列にしておけば大丈夫かと・・・

投稿時間:2003/12/05(Fri) 10:09
投稿者名:ねこ
Eメール:
URL :
タイトル:
Re^2: ボタン
動的にコントロール配列ってできるんですか?
いろいろ調べたんですが、出来ないと書いていて、悩んでます。

投稿時間:2003/12/05(Fri) 11:22
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^3: ボタン
> いろいろ調べたんですが、出来ないと書いていて、悩んでます。

この掲示板のワード検索で検索しても見つかりますよ。

とりあえず No.6763の書込みを見て下さい。

投稿時間:2003/12/12(Fri) 13:58
投稿者名:ねこ
Eメール:
URL :
タイトル:
返事遅れてすいません。
もとからあるのを増やすのではなくて、本当に動的に増やしたいのです。
ボタンを増やすことはできたんですが、コントロール配列で増やすことはできませんでした。
動的にコントロール配列はやはり、できないんでしょうか?

投稿時間:2003/12/12(Fri) 14:08
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^5: ボタン
> 動的にフォームにボタンを貼り付けても
> フォーム上のどのボタンを押したかとかわかりますか?
そのボタンのClickイベントが発生したら、そのボタンが押された、という事ですよ。

> 動的にコントロール配列はやはり、できないんでしょうか?
Controls.Addの場合は、コントロール配列にはできません。
もっとも、コントロール配列にすると、WithEventsできなくなるので、
Controls.Addでコントロール配列を作れたとしても、無意味でしょうけれども。

コントロール配列オブジェクトにするのではなく、
コントロールオブジェクトの配列で管理する事で代用してみてください。

投稿時間:2003/12/12(Fri) 18:14
投稿者名:ねこ
Eメール:
URL :
タイトル:
Re^6: ボタン
コントロール配列オブジェクトとコントロールオブジェクトの配列
では違いはないのでしょうか?

投稿時間:2003/12/12(Fri) 19:19
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^7: ボタン
> コントロール配列オブジェクトとコントロールオブジェクトの配列
> では違いはないのでしょうか?

ちょっとややこしいのですが、両者は別物です。

一般的に「コントロール配列」と呼ばれる物は、実は配列ではありません。
一種のコレクションオブジェクトなのです。


フォームに、Command1、Text1(0)、Text1(1)を貼り付けた上で、
下記のコードを試してみてください。

'===============================
Option Explicit

Private TextBoxes() As VB.TextBox
Private WithEvents SampleEvent As VB.TextBox

Private Sub Form_Load()
    Dim Index As Integer
    ReDim TextBoxes(2)

    Text1(0).Text = "Text1(0)"
    Text1(1).Text = "Text1(1)"

    For Index = 0 To 2
        Set TextBoxes(Index) = Controls.Add("VB.TextBox", "TextBox" & CStr(Index))
        With TextBoxes(Index)
            .Text = .Name
            .Top = (.Height + 240) * Index
            .Visible = True
        End With
    Next
End Sub

Private Sub Command1_Click()
    If IsArray(TextBoxes) Then
        Debug.Print "TextBoxesは、配列です。"
    Else
        Debug.Print "TextBoxesは、配列ではありません。"
    End If

    If IsArray(Text1) Then
        Debug.Print "Text1は、配列です。"
    Else
        Debug.Print "Text1は、配列ではありません。"
    End If

    If TypeOf TextBoxes(0) Is VB.TextBox Then
        Debug.Print "TextBoxes(0) は、TextBox型です。"
    Else
        Debug.Print "TextBoxes(0) は、TextBox型ではありません。"
    End If
        
    If TypeOf Text1(0) Is VB.TextBox Then
        Debug.Print "Text1(0) は、TextBox型です。"
    Else
        Debug.Print "Text1(0) は、TextBox型ではありません。"
    End If

    On Error Resume Next
    Set SampleEvent = TextBoxes(0)
    If Err.Number = 0 Then
        Debug.Print "TextBoxes(0) は、SampleEvent変数に代入できます。"
    Else
        Debug.Print "TextBoxes(0) は、SampleEvent変数に代入できません。"
    End If
    Err.Clear

    On Error Resume Next
    Set SampleEvent = Text1(0)
    If Err.Number = 0 Then
        Debug.Print "Text1(0) は、SampleEvent変数に代入できます。"
    Else
        Debug.Print "Text1(0) は、SampleEvent変数に代入できません。"
    End If
    On Error GoTo 0
End Sub
'===============================

投稿時間:2003/12/18(Thu) 10:59
投稿者名:ねこ
Eメール:
URL :
タイトル:
Re^8: ボタン
ありがとうございました。
なんとかなりそうです。