クラスについて

解決


aaa  2005-08-09 10:09:27  No: 91385  IP: [192.*.*.*]

クラスからフォームを参照する場合

Dim hForm1 as Form1
Set hForm1 = New Form1

とインスタンスをつくりそれでコントロールにアクセスしますが、
このとき Form_Initialize がおきます。

なので別の方法で、
クラスの引数にフォ−ムを渡してそれでコントロールにアクセス。
この方法はクラスでの書き方では間違った書き方でしょうか?

編集 削除
聖 羅樹  URL  2005-08-09 11:31:21  No: 91386  IP: [192.*.*.*]

>このとき Form_Initialize がおきます。
Form_Initialize が起きてはまずいのでしょうか?

>クラスの引数にフォ−ムを渡してそれでコントロールにアクセス。
渡すフォームをインスタンス化するときに、
やはり Form_Initialize が発生すると思いますが。
Form1 クラスのコントロールを操作する、別クラスのメソッドの引数に
Form1 を渡すということでしょうか?

編集 削除
aaa  2005-08-09 11:52:28  No: 91387  IP: [192.*.*.*]

>Form_Initialize が起きてはまずいのでしょうか?
その場所に色々初期化するコードなどをかいてるのでまずいです。
別の場所に書くことができますが、なるべくここに書きたいので・・

>Form1 クラスのコントロールを操作する、別クラスのメソッドの引数に
>Form1 を渡すということでしょうか?
そのとうりです。

Private Sub Form_Load()
    Call clsGetData.CD(Me)
End Sub

のような感じです。

編集 削除
じゃんぬねっと  URL  2005-08-09 12:33:37  No: 91388  IP: [192.*.*.*]

初期化する場所が設計上、好ましくないのでしょう。
そっちを改善すべきであって、回避するポイントが違うと思います。
回避するのであれば、フラグとか泥臭い手法になるでしょうね。

編集 削除
聖 羅樹  URL  2005-08-09 12:54:14  No: 91389  IP: [192.*.*.*]

>クラスの引数にフォ−ムを渡してそれでコントロールにアクセス。
>この方法はクラスでの書き方では間違った書き方でしょうか?

私は特に間違った書き方ではないと思います。
その部分を部品化できますし。

編集 削除
聖 羅樹  URL  2005-08-09 13:00:44  No: 91390  IP: [192.*.*.*]

ん?ちょっと私勘違いしてますか?

    Set hForm1 = New Form1
で Initialize が走って、初期化。
次に Show() か Load で Form_Load イベントが走って、
    Call clsGetData.CD(Me)
でコントロールにアクセス・・・ってあれ?
Load時に呼んでる CD() メソッドは何やってるんですか?

編集 削除
名前なし  2005-08-09 16:55:20  No: 91391  IP: [192.*.*.*]

編集 削除
那岐  2005-08-09 18:32:09  No: 91392  IP: [192.*.*.*]

とりあえずはコードを組んでやってみるとかググってみるとかしましたか?

#そもそも文法とコーディング規約さえその仕様にあっていれば
#書き方に間違いも何も無いとは思うんですが。上手下手はあるかもですけど。
#その辺は個人の自由だと常々思っているんですけれど如何でしょうね?

FormからスタートするかClassからスタートするかによっても対処は変わってくるはずです。FormからスタートするならばClassをFormで定義してやるべきですし、逆もまた同様に。相互に定義する必要性はこの場合ないでしょう?
正直、例示されたコードからは何がしたいのか汲み取れません。
何がしたいのか。何が外せない条件なのか。
その辺がはっきり判れば多少は違ったレスがつけられるかもしれません。あくまでも仮定ですが。

編集 削除