VB6でクラスモジュールで宣言したコマンドボタンのイベントを受け取るには?

解決


すま  2005-12-19 15:23:18  No: 129041

クラスモジュール内で

Public WithEvents cmdbutton As CommandButton
と宣言し,
Set cmdbutton = Form1.Controls.Add("VB.CommandButton", "cmdbutton" & tab_num)
でコントロールを追加
praive sub cmdbutton_click()
End sub
をやってもイベントを受け取ることができないのですが、どのようにすればいいのですか?


魔界の仮面弁士  2005-12-19 16:14:24  No: 129042

> praive sub cmdbutton_click()
こんなコードにはなりませんよね。(^^;
どうせなら、きちんと書きましょう。

> をやってもイベントを受け取ることができないのですが
はて。こちらでは問題なく動作しますけれどね…。
参考までに、こちらでテストしたコードを載せておきます。

---- Class1
Option Explicit
Public WithEvents cmdbutton As CommandButton
Private Sub Class_Initialize()
    Set cmdbutton = Form1.Controls.Add("VB.CommandButton", "cmdbutton1")
    cmdbutton.Visible = True
End Sub
Private Sub cmdbutton_Click()
    MsgBox cmdbutton.Name
End Sub


---- Form1
Option Explicit
Private X As Class1
Private Sub Form_Load()
    Set X = New Class1
End Sub
Private Sub Form_Click()
    'フォームをクリックすると、Class1のインスタンスを破棄します。
    '(ただし、Button自体はUnloadさせていません)
    Set X = Nothing
    'この後は、ボタンを押しても、当然 Class1 内にあった
    'cmdbutton_Clickの処理は動作しなくなります。
End Sub
Private Sub Form_Unload(Cancel As Integer)
    Set X = Nothing
End Sub


すま  2005-12-20 10:14:13  No: 129043

ありがとうございました。
クラスのインスタンスが破棄されていたのが原因だったようです。
あと、誤字申し訳ありませんでした。


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

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







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