VB6.0 + XPで開発しています。
フォーム1からフォーム2をモーダルで呼び出しているのですが、
フォーム2に[OK][キャンセル]ボタンがありどちらを押して閉じられた
かを判断したいのですが、どのように判断すればいいのでしょうか?
' フォームの表示
form.Show 1
' ここで判断したいです。
分かる方がいましたら押してください。
よろしくお願いします。
普通に考えれば Module1.bas に
Public form2_flag As Integer
フォーム2で
[OK]ボタンが押されたら form2_flag = "OK"
[キャンセル]ボタンが押されたら form2_flag = "Cancel"
...とでもして form.Show 1 されたら
if form2_flag = "OK" then
'OK時の処理
Elseif form2_flag = "Cancel" then
'キャンセル時の処理
end if
....ではダメでしょうか。
私がよく使う方法としては、
1.Form1の方に非表示のラベル(今回の例ではLabel1)を置いておきます
2.Form2が閉じられる時に、Form1.Label1 = "OK"などとフラグを立てる
3.Form1でLabel1の中身を調べれば完了
よい方法なのかはわかりませんが、意外と便利だと思います
ちょっと突っ込み・・・
>Public form2_flag As Integer
>form2_flag = "OK"
型が・・・
単純に、
'Form2側 ここから
Private miResult As VbMsgBoxResult
Public Function ShowModal(Optional Owner As Form) As VbMsgBoxResult
Call Me.Show(vbModal, Owner)
ShowModal = miResult
End Function
' OKボタン
Private Sub Command1_Click()
miResult = vbOK
Call Unload(Me)
End Sub
' キャンセルボタン
Private Sub Command2_Click()
miResult = vbCancel
Call Unload(Me)
End Sub
'Form2側 ここまで
'Form1側 ここから
If vbOK = Form2.ShowModal(Me) Then
' ここでOK時の処理
Else
' もしあればキャンセル時の処理
End If
'Form1側 ここまで
のようにするとか。
# Load/Unloadなどの管理は運用に即して決め直してください。
通ってみたさん、ありがとう。
そうですね、最初は1か0かの積もりが文字列に
してしまい、修正を忘れました。
akiさん、通ってみたさん、K.J.K.さん
ありがとうございます。
みなさんの情報を参考にしたら、
思った通りの動作をさせることができました。
本当にありがとうございました。
ツイート | ![]() |