[R] Compteur de checkbox

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
AlbatorV
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 05 nov. 2008 11:38
Status : Hors ligne

[R] Compteur de checkbox

#1

Message 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
Modifié en dernier par AlbatorV le mar. 09 déc. 2008 09:15, modifié 4 fois.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: Compteur de checkbox

#2

Message 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.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Compteur de checkbox

#3

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
AlbatorV
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 05 nov. 2008 11:38
Status : Hors ligne

Re: [..] Compteur de checkbox

#4

Message par AlbatorV »

Je pense avoir réussi, je testerai demain au boulot avec des lecteurs reseau...
► Afficher le texte
Modifié en dernier par AlbatorV le jeu. 20 nov. 2008 14:38, modifié 2 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Compteur de checkbox

#5

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
AlbatorV
Niveau 2
Niveau 2
Messages : 23
Enregistré le : mer. 05 nov. 2008 11:38
Status : Hors ligne

Re: [..] Compteur de checkbox

#6

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11796
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Compteur de checkbox

#7

Message 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.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre