VB6.0用掲示板の過去のログ(No.2)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [管理用]

投稿日: 2005/01/06(Thu) 15:42
投稿者魔界の仮面弁士
Eメール
URL
タイトルRe^3: ボタンコレクションを引数として渡す

> 匿名くん さん、どうもありがとうございます。素早い回答ですね。
>
> > cmd(i) は、オブジェクトのコレクションではなく、オブジェクト配列では。
> そうですね。「コントロール配列」と呼ぶのがもっとも適切なのかも。

VB6の「コントロール配列」は、一種のコレクションオブジェクトなので、
あながち間違っても居ないと思いますよ。

とはいえ、ボタンコレクションという表現は誤解をうみそうなので、
やはり、コントロール配列という表現を使った方が、意図を伝えやすいかと。


> ちょっとコレクションとは違うところがあるのかも。添字が付いていることから「配列」ですね。
混同させてしまいそうなのですが、実は「コントロール配列」は『配列ではありません』。
上記にも書いたように、VB固有のコレクションオブジェクトです。
(本当に「配列」だとしたら、UBoundプロパティではなく、UBound関数を使う必要がありますね)


> ええっ。そうなんですか?
それはおそらく、MSKBの記事を参考に書かれた物なのでしょうね。
hhttp://support.microsoft.com/default.aspx?scid=kb;ja;408439


確かに、「コントロール配列」を『Controlの配列』として渡したいのであれば、
そこに書かれたように、個別にControl型の変数に格納する必要があります。

しかし、『「コントロール配列」コレクション』のまま渡すのであれば、
汎用型の As Object を使うことで、プロシージャにも渡せます。

# 「コントロール配列」を表す固有の型は用意されていませんので、
# 汎用型のObjectやVariantなどを使う必要があります。


Option Explicit

Private Sub Command1_Click(Index As Integer)
    Call Sample(Command1)
End Sub

Private Sub Sample(ByVal Controls As Object)
    'Dim X As VB.Control
    Dim X As VB.CommandButton
    For Each X In Controls
        Debug.Print X.Caption
    Next
End Sub


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- VBレスキュー(花ちゃん) - - Web Forum -