モードレスフォームのイベントを取得するには

解決


Kuro_Gen  2004-10-06 01:48:15  No: 85915  IP: [192.*.*.*]

お世話になります。
VB6でForm1(exe)からForm2(DLL)を、モードレスでShowします。
その後Form2でボタンクリック等のイベントを、Form1(exe)で拾うことは可能でしょうか?
どうか宜しくお願い致します。

編集 削除
魔界の仮面弁士  2004-10-06 02:08:57  No: 85916  IP: [192.*.*.*]

書き方はいろいろあると思いますが、例えばこんなイメージでしょうか。


'===== 呼び出し側(Form1) =====
Option Explicit
Private WithEvents SampleClass As Class1
Private Sub Form_Load()
    Set SampleClass = New Class1
End Sub
Private Sub Command1_Click()
    SampleClass.Show
End Sub
Private Sub SampleClass_ButtonClick()
    MsgBox "ボタンが押されました。"
End Sub


'===== DLL側 (Class1) =====
Option Explicit
Public Event FormClosed()
Public Event ButtonClick()
Private WithEvents MyForm As Form
Private WithEvents Button1 As VB.CommandButton
Public Sub Show()
    Set MyForm = Form1
    Load MyForm
    Set Button1 = Form1.Command1
    Form1.Show
End Sub
Private Sub Button1_Click()
    RaiseEvent ButtonClick
End Sub
Private Sub MyForm_Unload(Cancel As Integer)
    RaiseEvent FormClosed
End Sub

編集 削除
Kuro_Gen  2004-10-06 10:58:24  No: 85917  IP: [192.*.*.*]

魔界の仮面弁士様
早速のご回答ありがとうございます。
やりたい事はすべて解決いたしました。
わかりやすい例まで示していただき、本当にありがとうございました。

編集 削除