別プロジェクトからフォームの参照を受け取るには


ぴんぽん  2002-08-30 00:37:48  No: 76037

任意のフォームのキーエベントをフックしてコントロールを制御するプログラムを作成しDLL化しようとしているのですが該当のソースをコンパイルすると以下のエラーがでます。
「プライベートオブジェクトモジュールを、
パブリックオブジェクトモジュール内でパブリックプローシジャの
引数または戻り値、パブリックデータメンバ、またはパブリックの
ユーザー定義型のフィールドとして、使用することはできません。」
どうやらフォーム型変数がまずいようです。
フォーム型変数をオブジェクト型に変えて再コンパイルしても同じ結果でした。何か他の方法があれば教えてください。お願いします。

[ソース]

'任意のフォームのイベントを請負うためイベントを宣言
Dim WithEvents mfrmForm As Form

'フォームとフォームコントロールの参照を受け取るメソッド
Public Sub Connect(frmForm As Form, varControls As Variant)

'任意のフォームオブジェクトを生成
Set mfrmForm = frmForm

'コントロール配列をバリアント型へ代入
mvarControls = varControls

End Sub

’フォームのイベント処理
Private Sub mfrmForm_KeyDown(KeyCode As Integer, Shift As Integer)

'いろいろな処理

End Sub


さわ  2002-09-09 22:31:29  No: 76038

的外れ?正しい方法かどうかわからないのですが・・・
上記のロジックを元にした場合
Form  の定義をバリアントにして定義してDLL作成

参照のEXE側ではWithEventsで以下エラー
オブジェクトはオートメーションイベントを発生させることは出来ません
がでるのでDLL側Class内にダミーのイベントによる関連付け以下を追加
Public Event DmyNotfy() 
によりFormのイベントをDLLで取得は可能でした
私自身あまり詳しくないのですが一度試して見てください


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加