クラスからフォームを参照する場合
Dim hForm1 as Form1
Set hForm1 = New Form1
とインスタンスをつくりそれでコントロールにアクセスしますが、
このとき Form_Initialize がおきます。
なので別の方法で、
クラスの引数にフォ−ムを渡してそれでコントロールにアクセス。
この方法はクラスでの書き方では間違った書き方でしょうか?
>このとき Form_Initialize がおきます。
Form_Initialize が起きてはまずいのでしょうか?
>クラスの引数にフォ−ムを渡してそれでコントロールにアクセス。
渡すフォームをインスタンス化するときに、
やはり Form_Initialize が発生すると思いますが。
Form1 クラスのコントロールを操作する、別クラスのメソッドの引数に
Form1 を渡すということでしょうか?
>Form_Initialize が起きてはまずいのでしょうか?
その場所に色々初期化するコードなどをかいてるのでまずいです。
別の場所に書くことができますが、なるべくここに書きたいので・・
>Form1 クラスのコントロールを操作する、別クラスのメソッドの引数に
>Form1 を渡すということでしょうか?
そのとうりです。
Private Sub Form_Load()
Call clsGetData.CD(Me)
End Sub
のような感じです。
初期化する場所が設計上、好ましくないのでしょう。
そっちを改善すべきであって、回避するポイントが違うと思います。
回避するのであれば、フラグとか泥臭い手法になるでしょうね。
>クラスの引数にフォ−ムを渡してそれでコントロールにアクセス。
>この方法はクラスでの書き方では間違った書き方でしょうか?
私は特に間違った書き方ではないと思います。
その部分を部品化できますし。
ん?ちょっと私勘違いしてますか?
Set hForm1 = New Form1
で Initialize が走って、初期化。
次に Show() か Load で Form_Load イベントが走って、
Call clsGetData.CD(Me)
でコントロールにアクセス・・・ってあれ?
Load時に呼んでる CD() メソッドは何やってるんですか?
とりあえずはコードを組んでやってみるとかググってみるとかしましたか?
#そもそも文法とコーディング規約さえその仕様にあっていれば
#書き方に間違いも何も無いとは思うんですが。上手下手はあるかもですけど。
#その辺は個人の自由だと常々思っているんですけれど如何でしょうね?
FormからスタートするかClassからスタートするかによっても対処は変わってくるはずです。FormからスタートするならばClassをFormで定義してやるべきですし、逆もまた同様に。相互に定義する必要性はこの場合ないでしょう?
正直、例示されたコードからは何がしたいのか汲み取れません。
何がしたいのか。何が外せない条件なのか。
その辺がはっきり判れば多少は違ったレスがつけられるかもしれません。あくまでも仮定ですが。