Page 1 sur 1

[R] Compteur de checkbox

Posté : mer. 19 nov. 2008 17:11
par AlbatorV
Bonjour, j'ai créé un GUI avec creation de checkbox en fonction du nombre de disque reseau trouvé.

Code : Tout sélectionner

$var = DriveGetDrive( "NETWORK" )
$nb = $var[0]
$h = 75
If NOT @error Then
    For $i = 1 to $var[0]
        GuiCtrlCreateCheckbox("Lecteur " & $var[$i], 25, $h, 200, 20)
        $h = $h + 20
    Next
EndIf
J'ai un bouton OK et qd je clique sur ce bouton je voudrais supprimer supprimer le lecteur a l'aide de la fonction 'DriveMapDel'.

Code : Tout sélectionner

Func OK()
Dim $iMsgBoxAnswer
$iMsgBoxAnswer = MsgBox(36,"Alerte...","Voulez-vous vraiment supprimer les lecteurs cochés ?")
Select
   Case $iMsgBoxAnswer = 6 ;oui
        msgbox(0,"","Nb de checkbox : " & $nb)
        ;DriveMapDel("X:")
   Case $iMsgBoxAnswer = 7 ;Non
       Exit

EndSelect
EndFunc
Je ne sais pas comment faire ? Je voudrais faire une boucle de 1 jusqu'au nombre de total de checkbox et si la checkbox est cochée, suppression de disque...

Merci d'avance

Re: Compteur de checkbox

Posté : mer. 19 nov. 2008 17:52
par timmalos
Bonjour ,

Je t'invite à lire les règles de présentation d'un message au plus vite, afin de faciliter le travail de l'equipe de modération.

Re: Compteur de checkbox

Posté : mer. 19 nov. 2008 18:34
par Tlem
Il vous faudra pour commencer attribuer 'dynamiquement' une variable pour chaque création d'un contrôle CheckBox (Allez faire un tour par ici pour avoir une idée de comment faire : http://www.autoitscript.fr/forum/viewto ... f=3&t=1275).
Une fois le handle de chaque contrôle récupéré, vous pourrez intervenir sur celui-ci.

Re: [..] Compteur de checkbox

Posté : mer. 19 nov. 2008 21:45
par AlbatorV
Je pense avoir réussi, je testerai demain au boulot avec des lecteurs reseau...
► Afficher le texte

Re: [..] Compteur de checkbox

Posté : mer. 19 nov. 2008 22:49
par Tlem
C'est effectivement une solution qui fonctionne.
Il est vrai aussi que je n'avais pas fait attention que le nombre de ChekBox est déterminé au début du script par la fonction DriveGetDrive et dans ce cas vous pouvez passer par une autre méthode.

Voici comment j'aurais écris le script :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$var = DriveGetDrive("ALL")
If IsArray($var) Then
    $GUI = GuiCreate("Sample GUI", 170, 400)
    ; BUTTON
    $OK = GuiCtrlCreateButton("OK", 10, 10, 50, 30)

    Dim $CB[$var[0] + 1]
    Dim $h = 75

    If Not @error Then
        For $i = 1 To $var[0]
            $CB[$i] = GUICtrlCreateCheckbox($var[$i] & "  <-  CheckBox" & $i, 25, $h, 200, 20)
            $h = $h + 20
        Next
    EndIf
    
    GUISetState(@SW_SHOW)

Else
    MsgBox(64, "Stop", "Aucun lecteur réseau trouvé  ")
    Exit
EndIf

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
            
        Case $OK
            OK()

    EndSwitch
WEnd


Func OK()
    Switch MsgBox(36, "Alerte...", "Voulez-vous vraiment supprimer les lecteurs cochés ?")
        Case 6 ;oui
            Local $CBC
            For $i = 1 to $Var[0]
                If BitAND(GUICtrlRead($CB[$i]), $GUI_CHECKED) = $GUI_CHECKED Then 
                    $CBC &= "$ChkBox" & $i & @CRLF
                EndIf
            Next
            MsgBox(0, "", "Nb de checkbox : " & $var[0] & @CRLF & "Liste des checkbox cochées : " & @CRLF & $CBC)
            ;DriveMapDel("X:")
        Case 7 ;Non
            Exit
    EndSwitch
EndFunc   ;==>OK

Re: [..] Compteur de checkbox

Posté : jeu. 20 nov. 2008 14:07
par AlbatorV
J'ai finalement utilisé votre méthode. Mais il y a 2 chose que je n'arrive pas à faire.

1) Récuperer le texte des checkbox pour les afficher dans le message d'alerte au lieu des lettres de lecteurs.
2) Mettre à jour le GUI après suppression des lecteurs (ne plus afficher les lecteurs supprimés).
► Afficher le texte

Re: [..] Compteur de checkbox

Posté : jeu. 20 nov. 2008 22:09
par Tlem
AlbatorV a écrit :Récuperer le texte des checkbox
Utilisez la commande GUICtrlRead(controlID[,advanced]) avec advanced à 1 (voir la doc de cette fonction).
AlbatorV a écrit :Mettre à jour le GUI après suppression des lecteurs (ne plus afficher les lecteurs supprimés)
Utilisez la commande GUICtrlDelete (controlID) après la suppression du lecteur.
Sinon, placez dans une fonction les lignes partant de la lecture des lecteurs, à l'affichage de la GUI.
Après la suppression de vos lecteurs, supprimez votre GUI ( GUIDelete([winhandle]) ) puis relancez votre fonction.