2017-05-28 5 views
0

Ekkehard.Horner m'a beaucoup aidé avec le code suivant (déjà modifié par moi). Mais maintenant je cherche un moyen d'ajouter un compteur chaque fois que le MsgBox "message 1" est affiché.Différents MsgBox après chaque itération

<html> 
<head> 
<title>Sync Tool</title> 
<HTA:APPLICATION 
    APPLICATIONNAME="Sync Tool" 
    ID="SyncTool" 
    VERSION="1.0.0" 
    BORDER="dialog" 
    MAXIMIZEBUTTON="no" 
    MINIMIZEBUTTON="no" 
    SCROLL="no" 
    SINGLEINSTANCE="yes" 
    CONTEXTMENU="no" 
    SELECTION="no"/> 
</head> 

<script language="VBScript"> 
Set objShell = CreateObject("WScript.Shell") 

Sub Window_OnLoad 
    Dim width, height 
    width = 330 
    height = 310 
    self.ResizeTo width, height 
    self.MoveTo (screen.AvailWidth-width)/2, (screen.AvailHeight-height)/2 
End Sub 

Sub OnClickButtonSyncNow() 
    ' Box A 
    If BoxAA.checked Then 
     MsgBox "BoxAA" 
    Else 
     'Do nothing 
    End If 

    If BoxAB.checked Then 
     MsgBox "BoxAB" 
    Else 
     'Do nothing 
    End If 

    If BoxAC.checked Then 
     MsgBox "BoxAC" 
    Else 
     'Do nothing 
    End If 

    If BoxAD.checked Then 
     MsgBox "BoxAD" 
    Else 
     'Do nothing 
    End If 

    If BoxAE.checked Then 
     MsgBox "BoxAE" 
    Else 
     'Do nothing 
    End If 

    ' Box B 
    If BoxBA.checked Then 
     MsgBox "BoxBA" 
    Else 
     'Do nothing 
    End If 

    If BoxBB.checked Then 
     MsgBox "BoxBB" 
    Else 
     'Do nothing 
    End If 

    If BoxBC.checked Then 
     MsgBox "BoxBC" 
    Else 
     'Do nothing 
    End If 

    If BoxBD.checked Then 
     MsgBox "BoxBD" 
    Else 
     'Do nothing 
    End If 

    If BoxBE.checked Then 
     MsgBox "BoxBE" 
    Else 
     'Do nothing 
    End If 

    Dim bF : bF = False 
    Dim c1 
    For Each c1 In Split("A B C D E F G H I J") 
     Dim n : n = c1 
     Dim b : Set b = document.getElementById(n) 
     If b.Checked Then 
      bF = True 
     End If 
    Next 
    If bF Then 
     MsgBox "all done" 
    Else 
     MsgBox "message 1" 
    End If 
End Sub 

Sub ExitTool() 
    window.close() 
End Sub 
</script> 

<body bgcolor="firebrick"> 
<style type="text/css"> 
.tg {border-collapse:collapse;border-spacing:0;} 
.tg th{font-family:Arial, sans-serif; font-size:14px; font-weight:normal; padding-top:0px ;padding-right:20px; padding-bottom:0px; padding-left:0px ;border-style:solid; border-width:0px; overflow:hidden; word-break:normal;} 
.tg td{font-family:Arial, sans-serif; font-size:14px; padding-top:5px ;padding-right:10px; padding-bottom:0px; padding-left:0px ;border-style:solid; border-width:0px; overflow:hidden; word-break:normal;} 
.tg .tg-header{color:#FFFB00; font-size:22px; font-weight:bold; font-family:Verdana, Geneva, sans-serif !important;} 
.tg .tg-text{color:white; font-family:Verdana, Geneva, sans-serif !important; vertical-align:top} 
.button {height:50px; width:136px; font-weight:bold; background-color:#555555; border: 2px solid #FFFB00; color:white; text-align:center; text-decoration:none; display:inline-block; font-size:16px;} 
</style> 
<table class="tg"> 
    <tr> 
    <th class="tg-header">Box A</th> 
    <th class="tg-header">Box B</th> 
    </tr> 
    <tr> 
    <td class="tg-text"><input type="checkbox" name="BoxAA" id="A">AA</td> 
    <td class="tg-text"><input type="checkbox" name="BoxBA" id="B">BA</td> 
    </tr> 
    <tr> 
    <td class="tg-text"><input type="checkbox" name="BoxAB" id="C">AB</td> 
    <td class="tg-text"><input type="checkbox" name="BoxBB" id="D">BB</td> 
    </tr> 
    <tr> 
    <td class="tg-text"><input type="checkbox" name="BoxAC" id="E">AC</td> 
    <td class="tg-text"><input type="checkbox" name="BoxBC" id="F">BC</td> 
    </tr> 
    <tr> 
    <td class="tg-text"><input type="checkbox" name="BoxAD" id="G">AD</td> 
    <td class="tg-text"><input type="checkbox" name="BoxBD" id="H">BD</td> 
    </tr> 
    <tr> 
    <td class="tg-text"><input type="checkbox" name="BoxAE" id="I">AE</td> 
    <td class="tg-text"><input type="checkbox" name="BoxBE" id="J">BE</td> 
    </tr> 
</table> 
<br> 
<input type="button" class="button" name="SyncNow" id="SyncNow" value="Sync Now" onclick="OnClickButtonSyncNow"> 
<input type="button" class="button" name="Exit" id="Exit" value="Exit" onclick="ExitTool"> 
</body> 
</html> 

Le résultat que je cherche est quelque chose comme:

If bF Then 
    MsgBox "all done" 
    window.close() 
Else 
    MsgBox "message 1" 'counter + 1 
ElseIf counter = 2 Then 
    MsgBox "message 2" 'counter + 1 
ElseIf counter = 3 Then 
    MsgBox "message 3" 'counter + 1 
ElseIf counter = 4 Then 
    MsgBox "message 4" 'counter + 1 
ElseIf counter = 5 Then 
    MsgBox "message 5" 'no more counting needed because of window.close() 
    window.close() 
End If 

J'ai essayé différentes choses comme Do..Loop, mais mon compteur ne va jamais au-delà de 1. vraiment du mal à comprendre les bases de comptage dans VBScript.

+0

Quand clique sur un bouton et toutes les cases sont désactivées il affiche le message 1. Mais ce que je suis en train d'accomplir, est de montrer un nouveau message à chaque fois que le bouton est cliqué et toutes les cases à cocher sont encore non cochées, et doit s'arrêter après 5 messages. Je vais mettre à jour mon 1er post plus tard ce soir, pour ajouter l'ensemble HTA. – WatskeBart

+0

Juste ajouté le HTA complet dans le premier poste – WatskeBart

Répondre

1

Vous avez besoin d'une variable globale pour conserver le nombre d'appels de procédure et d'un tableau avec les messages auxquels vous accédez en utilisant le compteur comme index. Changer votre code à quelque chose comme ceci:

<script language="VBScript"> 
Dim ctr : ctr = 0 
messages = Array("message 1", _ 
    "message 2", _ 
    "message 3", _ 
    "message 4", _ 
    "aborting" 
) 
... 
Sub OnClickButtonSyncNow 
    ... 
    If bF Then 
     MsgBox "all done" 
     window.Close 
    Else 
     MsgBox messages(ctr) 
     If ctr >= 4 Then window.Close 
     ctr = ctr + 1 
    End If 
End Sub 
... 
</script> 
+0

D'abord, merci de corriger mon poste, l'anglais n'est pas ma langue maternelle :) Deuxièmement, je pense que je n'ai pas assez expliqué ce que je suis en train d'accomplir, ou je juste ne vois pas/comprends ta réponse. Lorsqu'un utilisateur clique sur le bouton «SyncNow» et «bF» est «Faux», il affiche un «MsgBox» indiquant à l'utilisateur qu'il a oublié de cocher une case. Ce que je recherche, c'est quand un utilisateur clique à nouveau sur le bouton 'SyncNow', il doit montrer un autre message indiquant à l'utilisateur qu'il/elle n'a toujours pas sélectionné de cases à cocher. Et après 5 message je vais fermer l'HTA, car l'utilisateur est alors clairement incompatible :) – WatskeBart

+0

Je pense que me parler d'un compteur était probablement trompeur et incorrect peut-être. – WatskeBart

+0

@WatskeBart J'ai fait quelques ajustements mineurs, mais AFAICS le code devrait déjà avoir fait ce que vous venez de décrire. Si ce n'est pas le cas, décrivez le résultat différent de ce que vous attendiez. Voulez-vous des messages différents pour chaque itération? –