クラスモジュール内で呼出元のオブジェクトへの参照(フォーム)を取得する ことはできるのでしょうか?
編集 削除こんにちは、じゃんぬねっと です。
クラス モジュールってことは VB6 ですよね?
> クラスモジュール内で呼出元のオブジェクトへの参照(フォーム)を取得することはできるのでしょうか?
その "呼び出し元" 自体を渡しちゃうとか。
無数のメソッドで利用するのならば、似非コンストラクタを作成して、
モジュール メンバとして "呼び出し元" 自体を渡すとか...
# もっと高度なお話だったでしょうか?
>無数のメソッドで利用するのならば、似非コンストラクタを作成して、
>モジュール メンバとして "呼び出し元" 自体を渡すとか...
難しくてよく分からないです;
もう少し分かりやすくお願いします。
こんにちは、じゃんぬねっと です。
> 難しくてよく分からないです;
> もう少し分かりやすくお願いします。
説明が下手で、判りにくい説明をしてしまったようですね。(^-^A
大変失礼致しました。m(_ _)m
ところで、引数として渡すという点については OK なんですよね?
(でないと以下の説明は無意味になってしまいますが)
クラス モジュールで Private な変数として保持させれば良いのです。
それを、メソッド・プロパティなどで設定しておけば良いのではないでしょうか?
Source:---------------------------------------------------------------
Option Explicit
' プライベート メンバ
Private mFormParent As Form
' 代用コンストラクタ (プロパティで公開しても良い)
Public Sub Constructor(ByRef pForm As Form)
Set mFormParent = pForm
End Sub
' で、内部のメソッドで扱う時は...
' Private Sub MethodHoge()
' "mFormParent" を扱えば良い
' End Sub
余計な世話になると思いますが、イベントも受け取りたければ、
Private WithEvents mFormParent As Form
としてください。
# とは言うものの、呼び出し側を意識した組み方はお勧めできませんが。
大変分かりやすいレスありがとうございます。
その方法だと、
'フォーム側
Private mReon as clsReon 'クラスモジュール名:clsReon
Private Sub Form_Load()
Set mReon = New clsReon
mReon.Constructor(Me) '①
End Sub
となりますよね?
個人的に①の部分が気に入らないので、クラスモジュール側で何とかできないのだろうか? と思ってるのですが・・・無理ですか?
こんにちは じゃんぬねっと です。
> 個人的に①の部分が気に入らないので
はい、私も好きではありません。(^-^;)
というのも、確実性がないのがイヤなんですよね。
VB.NET だと、コンストラクタで引数を強制することが可能ですが、
VB6 だと コンストラクタで別のオーバーロードは使えません。
いくつのメソッドで、親である Form が必要になるかは存じませんが、
毎回、そのメソッドに引数として渡した方が安全でしょうね...。
では、そのつど渡す 方法でやってみます。
どうもありがとうございました!