[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/10/17(Mon) 11:16
投稿者名:なお
Eメール:
URL :
タイトル:
コントロール配列のイベントを1クラスにまとめたい
はじめまして、なおともうします。わからないことがありまして
質問させていただきたいのです・・

フォームに配置しているコントロールのイベントを1クラスにま
とめて処理しようとしています。コントロールが配列になってい
なければ、以下のように、

・Form1上
Text1
Text2
Text3

・Form1のソース
Option Explicit

Private mobjTextList() As clsText

Private Sub Form_Load()
    ReDim mobjTextList(2) As clsText
    
    Set mobjTextList(0) = New clsText
    Set mobjTextList(1) = New clsText
    Set mobjTextList(2) = New clsText
    
    Set mobjTextList(0).TextBox = Text1
    Set mobjTextList(1).TextBox = Text2
    Set mobjTextList(2).TextBox = Text3
End Sub


・clsTextのソース
Option Explicit
Private WithEvents mobjTextBox As TextBox

Public Property Set TextBox(objTextBox As TextBox)
    Set mobjTextBox = objTextBox
End Property

Private Sub mobjTextBox_Change()
    mobjTextBox.FontBold = True
End Sub

とすることで、フォームに配置したTextBoxのChangeイベントを
clsTextにまとめることは出来ました。しかし、Form1上のコント
ロールが以下のように配列になっているとき、

・Form1上
Text1(0)
Text1(1)
Text1(2)

フォームに以下のようなソースを書いて実行すると、

Option Explicit

Private mobjTextList() As clsText

Private Sub Form_Load()
    ReDim mobjTextList(2) As clsText
    
    Set mobjTextList(0) = New clsText
    Set mobjTextList(1) = New clsText
    Set mobjTextList(2) = New clsText
    
    Set mobjTextList(0).TextBox = Text1(0)
    Set mobjTextList(1).TextBox = Text1(1)
    Set mobjTextList(2).TextBox = Text1(2)
End Sub

「オブジェクトまたはクラスがこのイベントセットを
サポートしていません。」

とエラーが発生してしまいます。このように、配列になっている
コントロールを1クラスにまとめてイベントを書く方法がありま
したら、ご教示願えますでしょうか。

よろしくお願いいたします。

投稿時間:2005/10/17(Mon) 11:28
投稿者名: 
Eメール:
URL :
タイトル:
Re: コントロール配列のイベントを1クラスにまとめたい
コントロール配列にWithEventsは使えません。
代価案は直ぐに浮かびませんが、
直接コントロール配列を扱うのではなく
 何か独自にイベントを定義してそれで包み込んで使う。
 ユーザーコントロールで包み込んでしまう。
などでどうにかできるかもしれません。

投稿時間:2005/10/17(Mon) 15:55
投稿者名:なお
Eメール:
URL :
タイトル:
Re^2: コントロール配列のイベントを1クラスにまとめたい
ご返信ありがとうございます。
できませんでしたか・・コントロールの数もそんなに多くないので
あきらめることにします。

ありがとうございました。