8

これを行うためのベスト プラクティスの方法を知りたいという理由と、2002 年に得られた Google の上位の結果が、質問に対する回答さえなかったフォーラム スレッドだったという理由もあります。

私はいくつかの VB6 コードを継承し、そのコードには MsgBox 呼び出しがいくつかあります。その多くは、エンド ユーザーがしばらくすると非常に煩わしく感じるメッセージを表示します (たとえば、「印刷完了」、「レコードが追加されました」など)。

MsgBox にチェックボックスの標準ユーザー インターフェース コントロールを追加して、「今後は聞かないでください」というメッセージを表示して、チェックして [OK] をクリックすると、設定が保存され、プログラムに通知されるようにしたいと思います。二度とそれを尋ねないこと。かなり標準的なコントロールであり、その考え方は一目瞭然です。

私が知りたいのは、VB6でこれを行うベストプラクティスの方法は何ですか. これらのタイプの msgboxen 用に新しいフォームを作成し、古い MsgBox 呼び出しをそのフォームの .Show に置き換えるだけの明白な方法がありますが、スタック オーバーフローの VB6 教祖はより良い方法を持っていますか?

前もって感謝します

4

4 に答える 4

9

私の知る限り、他に方法はありません。チェックボックスを使用して、独自のメッセージボックスフォームを作成する必要があります。もちろん、この設定を保存および取得するためにコードを変更する必要もあります(そして設定に基づいて適切に動作します)。

私は自分のアプリケーションでこれを何度も行ってきました。考えるべきことが1つあります。ユーザーが「これを二度と表示しない」チェックボックスをオンにしたとします。私の意見では、設定をリセットする方法があるはずです。メッセージボックスフォームが再度表示されないため、これを構成フォームに追加しました(アプリ用)。

考慮したいことの1つは、MSGBOX関数をサブクラス化することです。アプリ内に同様のパラメーターリストを持つ関数を作成できますが、いくつか追加されています。追加のパラメーターが欠落している場合は、vba.MsgBoxを呼び出すだけです(標準の動作を取得するため)。追加のパラメータを渡すと、代わりに新しいフォームを呼び出すことができます。

于 2009-06-24T19:33:35.843 に答える
8

まあ...あなたは絶対に正しい人ではありません;)

Win2000 以降では、このトリックを実行するSHMessageBoxCheck関数があります。VB6 宣言:

Private Declare Function SHMessageBoxCheck Lib "shlwapi" Alias "#185" (ByVal hWnd As Long, ByVal lpszText As String, ByVal lpszTitle As String, ByVal dwType As VbMsgBoxStyle, ByVal iDefault As Long, ByVal lpszId As String) As Long

他のすべてについては、リンクに従ってください:)

于 2009-06-24T20:30:12.140 に答える
0

これは私のダウンした汚い解決策でした:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
myfile = Workbooks.Application.ActiveWorkbook.Path & "\noprompt.txt"
If Dir(myfile) <> "" Then Exit Sub
exportData = MsgBox("Export data?" & vbCrLf & "Select Cancel (or × top right) to prevent this prompt from displaying again.", vbYesNoCancel, "Close Workbook")
If exportData = vbYes Then
    Call ExportValues 'a separate function...
ElseIf exportData = vbCancel Then
    'create file noprompt.txt
    Open myfile For Output As #1
    Write #1, "Delete this file to restore prompt to Export Data when workbook is closed."
    Close #1
    Exit Sub
ElseIf exportData = vbNo Then
    Exit Sub

End If


End Sub

私のアプリのドキュメントでは、ファイルを削除するとプロンプトが復元されると説明されています。

于 2015-09-11T20:46:57.417 に答える
0

このような機能を提供する場合、メッセージボックスの表示を「オン」にする必要がある場合があります。
つまり、ユーザーは、何らかの設定を使用して msgbox を再度表示するオプションを持つ必要があります。

その代わりに、ステータスバーを使用して通知を表示するか、通知メッセージのラベルを付けて、数秒後にオフにすることができます。

于 2009-06-24T19:32:45.063 に答える