メッセージボックスの自作方法

解決


  2004-05-24 20:03:04  No: 83492

VB6.0 SP6
Windows2000
メッセージボックスを自作しなくてはならないのですが、
メッセージボックス用フォームを作成し、モーダルフォームとして表示するまではよいのですが、選択(クリック)したコマンドを、元のフォームに返す方法が分かりません。

グローバル変数や、ラベルなどに、クリックしたボタンの判断を入力する
という方法が思い浮かんだのですが、
過去ログ等を検索した所、他に方法がありそうなのですが、
その方法が見つけられませんでした。

宜しくお願いします。


koma  2004-05-24 21:06:15  No: 83493

初心者の浅知恵かもしれませんが、

Public myMsgBoxValue As Variant

Public Function MyMsgBox() As Variant
 frmMyMsgBox.Show vbModal
 MyMsgBox = myMsgBoxValue
End Function

という具合にグローバル関数を間に噛ませては如何でしょう。


へいぽ  2004-05-24 21:06:35  No: 83494

大雑把ですが、次のようにして実行してみて下さい。

'* 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


  2004-05-24 22:50:30  No: 83495

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つの判断を作れました。
本当にありがとうございました!


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

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






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