イsetで追加したものをクリックでイベントを発生させるにはどうすればいいのでしょうか?

解決


こう  2004-05-25 05:51:34  No: 113496  IP: [192.*.*.*]

Private ToComment(10) As CommandButton
Dim i As Integer

----------------------------------------------------------
Private Sub Command1_Click()

Set ToEnd(i) = Form2.Controls.Add("VB.CommandButton", "ToEnd" & CStr(i))
   With ToEnd(i)
       .Visible = True
       .Width = 1095
   End With

End Sub

でForm2につくったコマンドをクリックすると終了するようにするにはどうすればいいのでしょうか。

よろしくおねがいします。

編集 削除
Say  2004-05-25 09:53:18  No: 113497  IP: [192.*.*.*]

「control.add  変数のついて」の回答を
きちんと読まれませんでしたか?

>あるいは、イベントを使わないのなら
>Private  lblObj(10) As Label

と書いたと思いますが?

イベントを使いたいならWithEventsは必須です。
そして、WithEventsを指定して配列は作れません。

コントロール配列を動的に作成したかったら
Loadステートメントを使ってください。

>Form2につくったコマンドをクリックすると終了するようにするにはどうすればいいのでしょうか。

無理やりしたかったら、サブクラス化かローカルフックで
WM_LBUTTONDOWNを拾って処理するのが正道ですが、

手抜きするならこんなかんじ。(邪道編)

Option Explicit
Private Declare Function PeekMessage Lib "user32" Alias _
            "PeekMessageA" (lpMsg As MSG, ByVal hwnd As Long, _
            ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, _
            ByVal wRemoveMsg As Long) As Long
Private Type POINTAPI
        x As Long
        y As Long
End Type
Private Type MSG
    hwnd As Long
    message As Long
    wParam As Long
    lParam As Long
    time As Long
    pt As POINTAPI
End Type
Private msgMsg As MSG
Private Const WM_LBUTTONDOWN = &H201
Private Const PM_NOREMOVE = &H0
Private Const PM_REMOVE = &H1
Private ToEnd(10) As CommandButton
Private Sub Command1_Click()
    Form2.Show
    Set ToEnd(0) = Form2.Controls.Add("VB.CommandButton", "ToEnd" & CStr(0))
    With ToEnd(0)
       .Visible = True
       .Width = 1095
    End With
    Do While PeekMessage(msgMsg, ToEnd(0).hwnd, _
                    WM_LBUTTONDOWN, WM_LBUTTONDOWN, PM_REMOVE) = 0
        DoEvents
    Loop
    Unload Form2
End Sub

素直にLoadステートメントでボタンの動的追加したほうが楽だと思いますが・・・。
CPU使用率の問題もあるし。

編集 削除
こう  2004-05-25 10:12:59  No: 113498  IP: [192.*.*.*]

ぬあ!「イベントを使う」ってそういうことだったんですか!
ごめんなさい!m(_ _)m

load勉強してみますね。ありがとうございました

編集 削除