web-dev-qa-db-fra.com

Comment puis-je afficher une boîte de message avec deux boutons?

Comment afficher une boîte de message avec deux boutons (Par exemple: "on", "off")?

15
yael

Vous voulez probablement faire quelque chose comme ça:

result = MsgBox ("Yes or No?", vbYesNo, "Yes No Example")

Select Case result
Case vbYes
    MsgBox("You chose Yes")
Case vbNo
    MsgBox("You chose No")
End Select

Pour ajouter une icône:

result = MsgBox ("Yes or No?", vbYesNo + vbQuestion, "Yes No Example")

Autres options d'icône:

vbCritical or vbExclamation
20
Sam Johnson

Le VBScript Messagebox est assez limité en ce qui concerne les étiquettes que vous pouvez appliquer aux boutons, vos choix se limitent à:

  • D'accord
  • Annuler
  • Réessayez
  • Avorter
  • Ignorer
  • Oui
  • Non

Donc, vous allez devoir créer votre propre formulaire si vous voulez "ON"/"OFF"

Mieux encore, pourquoi ne pas reformuler l’invite dans la zone pour que l’une des options ci-dessus fonctionne.

Par exemple:

Do you want the light on? 
[Yes] [No]

Et pour l'amour de Dieu , ne faites pas l'une de ces monstruosités de l'interface utilisateur!

Switch setting? (Click "yes" for ON and "No" for Off)
[Yes] [No]
4
JohnFx

Rappelez-vous - si vous définissez les boutons sur vbOkOnly - il retournera toujours retournera 1.

Vous ne pouvez donc pas décider si un utilisateur a cliqué sur le bouton Fermer ou sur le bouton OK. Vous devez simplement ajouter une option vbOk.

0
jave

C'est faisable, je l'ai trouvé ailleurs sur le web ... ce n'est pas mon travail! :)

    Option Explicit
' Import
Private Declare Function GetCurrentThreadId Lib "kernel32" () As Long

Private Declare Function SetDlgItemText Lib "user32" _
    Alias "SetDlgItemTextA" _
    (ByVal hDlg As Long, _
     ByVal nIDDlgItem As Long, _
     ByVal lpString As String) As Long

Private Declare Function SetWindowsHookEx Lib "user32" _
    Alias "SetWindowsHookExA" _
    (ByVal idHook As Long, _
     ByVal lpfn As Long, _
     ByVal hmod As Long, _
     ByVal dwThreadId As Long) As Long

Private Declare Function UnhookWindowsHookEx Lib "user32" _
    (ByVal hHook As Long) As Long

' Handle to the Hook procedure
Private hHook As Long

' Hook type
Private Const WH_CBT = 5
Private Const HCBT_ACTIVATE = 5

' Constants
Public Const IDOK = 1
Public Const IDCANCEL = 2
Public Const IDABORT = 3
Public Const IDRETRY = 4
Public Const IDIGNORE = 5
Public Const IDYES = 6
Public Const IDNO = 7

Public Sub MsgBoxSmile()
    ' Set Hook
    hHook = SetWindowsHookEx(WH_CBT, _
                             AddressOf MsgBoxHookProc, _
                             0, _
                             GetCurrentThreadId)

    ' Run MessageBox
    MsgBox "Smiling Message Box", vbYesNo, "Message Box Hooking"
End Sub

Private Function MsgBoxHookProc(ByVal lMsg As Long, _
                                ByVal wParam As Long, _
                                ByVal lParam As Long) As Long

    If lMsg = HCBT_ACTIVATE Then
        SetDlgItemText wParam, IDYES, "Yes   :-)"
        SetDlgItemText wParam, IDNO, "No   :-("

        ' Release the Hook
        UnhookWindowsHookEx hHook
    End If

    MsgBoxHookProc = False
End Function
0
Peter Eden
msgbox ("Message goes here",0+16,"Title goes here")

si l'utilisateur est supposé prendre une décision, la variable peut être ajoutée comme ceci.

variable=msgbox ("Message goes here",0+16,"Title goes here")

Les chiffres au milieu varient en fonction de l'aspect de la boîte de message . Voici la liste.

0 - bouton ok seulement

1 - ok et annuler

2 - abandonner, réessayer et ignorer

3 - oui non et annuler

4 - oui et non

5 - réessayer et annuler

POUR CHANGER LE SYMBOLE (NUMÉRO DROIT)

16 - icône de message critique

32 - icône d'avertissement

48 - message d'avertissement

64 - message d'information

BOUTON PAR DEFAUT

0 = vbDefaultButton1 - Le premier bouton est celui par défaut

256 = vbDefaultButton2 - Le deuxième bouton est le bouton par défaut

512 = vbDefaultButton3 - Le troisième bouton est la valeur par défaut

768 = vbDefaultButton4 - Le quatrième bouton est celui par défaut

SYSTÈME MODAL

4096 = système modal, l'alerte sera au-dessus de toutes les applications

Remarque: il y a quelques numéros supplémentaires. Il suffit de les ajouter aux nombres déjà présents comme

msgbox("Hello World", 0+16+0+4096)

from https://www.instructables.com/id/The-Ultimate-VBS-Tutorial/

0
Guy

Ne peut être fait. Les boutons MsgBox ne peuvent avoir que des valeurs spécifiques.
.__ Vous devrez rouler votre propre formulaire pour cela.

Pour créer un MsgBox avec deux options (Oui/Non):

MsgBox("Some Text", vbYesNo)
0