VB6.0 SP6
Windows2000
メッセージボックスを自作しなくてはならないのですが、
メッセージボックス用フォームを作成し、モーダルフォームとして表示するまではよいのですが、選択(クリック)したコマンドを、元のフォームに返す方法が分かりません。
グローバル変数や、ラベルなどに、クリックしたボタンの判断を入力する
という方法が思い浮かんだのですが、
過去ログ等を検索した所、他に方法がありそうなのですが、
その方法が見つけられませんでした。
宜しくお願いします。
初心者の浅知恵かもしれませんが、
Public myMsgBoxValue As Variant
Public Function MyMsgBox() As Variant
frmMyMsgBox.Show vbModal
MyMsgBox = myMsgBoxValue
End Function
という具合にグローバル関数を間に噛ませては如何でしょう。
大雑把ですが、次のようにして実行してみて下さい。
'* Form1 ( Command1 を配置)
Option Explicit
Private Sub Command1_Click()
Select Case frmMsgBox.Disp("AAAAAAAAAAAA", vbOKCancel)
Case vbOK
MsgBox "OK が押されました。"
Case vbCancel
MsgBox "CANCEL が押されました。"
Case Else
MsgBox "????????"
End Select
End Sub
'* frmMsgBox ( Command1, Command2, Label1 を配置)
Option Explicit
Dim eRetValue As VbMsgBoxResult
Public Function Disp(ByVal Prompt As String, _
Optional ByVal Buttons As VbMsgBoxStyle = vbOKOnly, _
Optional ByVal Title As String = "") As VbMsgBoxResult
'* ラベルやボタンなどの設定
Label1.Caption = Prompt
Command1.Caption = "OK"
Command2.Caption = "CANCEL"
'* フォームを表示
Me.Show vbModal
'* 戻り値の設定
Disp = eRetValue
End Function
Private Sub Command1_Click()
eRetValue = vbOK
Unload Me
End Sub
Private Sub Command2_Click()
eRetValue = vbCancel
Unload Me
End Sub
komaさん、へいぽさん
ありがとうございました。
へいぽさんのコードを流用させて頂きました。
4つコマンドを作らなくてはいけなかったので、
自作にしたのですが
Private Sub Command1_Click()
eRetValue = vbOK
Unload Me
End Sub
Private Sub Command2_Click()
eRetValue = vbYes
Unload Me
End Sub
Private Sub Command3_Click()
eRetValue = vbNo
Unload Me
End Sub
Private Sub Command4_Click()
eRetValue = vbCancel
Unload Me
End Sub
で4つの判断を作れました。
本当にありがとうございました!
ツイート | ![]() |