[..] Besoin d'aide avec checkbox et bouton !

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
cyberyeye
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 30 déc. 2008 13:40
Status : Hors ligne

[..] Besoin d'aide avec checkbox et bouton !

#1

Message par cyberyeye »

Bonjour à tous !

Je debute avec autoIT (je ne suis pas programmeur) j'ai des notions de scripting (batch windows).
J'ai créer un petit script très simple me permettant de sauvegarder divers dossiers (mes documents, favoris, adress book, profil de TB, FF...) ce script inclus une variante XP et une variante Vista.

Tout cela fonctionne "bien", mais ne me permet pas de choisir les elements à sauvegarder ou restaurer :(

Donc, j'aimerai inclure des checkbox, chaque checkbox correspondrai à un élements (dossier) à sauvegarder (ou restaurer), les checkbox cochés serait executer via un bouton.

Ma question:
Le probleme c'est que je ne comprend pas comment/ou, mettre du code sur chaque checkbox, et lié ces checkbox à un bouton qui execute le code contenu dans les checkbox cochés !

Il me faudra un exemple simple et concret :-)

Une petite aide à partir de ça me permettrai de comprendre :D

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
; la gui
$Form = GUICreate("Je pige pas le truc grrr", 406, 265, 269, 138)

; checkbox 1 devra permettre de copier le dossier "1"
$chk_1 = GUICtrlCreateCheckbox("Dossier 1 à copier", 10, 16, 130, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetFont(-1, 8, 800, 4, "Arial")

; checkbox 2 devra permettre de copier le dossier "2"
$chk_2 = GUICtrlCreateCheckbox("Dossier 2 à copier", 10, 43, 130, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
GUICtrlSetFont(-1, 8, 800, 4, "Arial")

; le bouton qui lancera la copie des checkbox cocher
$Sauvegarder = GUICtrlCreateButton("Sauvegarder", 32, 152, 129, 25)
GUICtrlSetOnEvent( -1,"Sauvegarder_exec")
GUISetState(@SW_SHOW)

; Fonction Sauvegarder(demarrer la copie des checkbox cocher)
Func Sauvegarder_exec()
    EndFunc

;Fonction sur les icones fermer,quitter,minimiser...
Func Close()
    Select
        Case @GUI_CtrlId = $GUI_EVENT_CLOSE
            Exit
                EndSelect
    EndFunc
Func Maximize()
    Select
        Case @GUI_CtrlId = $GUI_EVENT_MAXIMIZE
                EndSelect
    EndFunc
Func Minimize()
    Select
        Case @GUI_CtrlId = $GUI_EVENT_MINIMIZE
                EndSelect
    EndFunc
Func Restore()
    Select
        Case @GUI_CtrlId = $GUI_EVENT_RESTORE
                EndSelect
    EndFunc

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

    EndSwitch
WEnd
 
Modifié en dernier par ani le mar. 30 déc. 2008 18:56, modifié 1 fois.
Raison : Ajout de la balise [..] dans le titre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#2

Message par Tlem »

Voici un magnifique exemple très simple et détaillé de l'utilisation de CheckBox dans un code.
Je pense avoir mis suffisamment de commentaires pour que vous compreniez son fonctionnement.
► Afficher le texteCode
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é".
cyberyeye
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 30 déc. 2008 13:40
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#3

Message par cyberyeye »

Merci beaucoup, bizarrement en fouillant sur le net, voir cet (excellent) forum en editant des script contenant des checkbox c'etait pas très clair à décoder !

Votre exemple m'a permis de comprendre le principe (je ne comprend le truc de la variable mais ça viendra peut-etre). Tout n'est pas clair, mais je vais faire des test je poserai surement encore quelques questions d'ici peux ^^

J'arrive à mettre maintenant un code dessus: ouf !

Code : Tout sélectionner

            If _IsChecked($Cb1) Then $Res = $Res & " CB1 "
                If FileExists(@FavoritesDir) Then
                        DirCreate(@WorkingDir & "\XP" & "\Favoris")
                        _FileCopy(@FavoritesDir,@WorkingDir & "\XP")
                            Sleep(1000)
                    Else
                MsgBox(64,"Erreur FavXP-Bak", "Dossier inexistant: sauvegarde impossible !")
            EndIf
Cet exemple (repris de votre source) vous semble "potable" ou "désatreux"... comme placement de code ?

Et... Bonne année ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#4

Message par Tlem »

Le principe y est, mais c'est pas tout à fait ça ...
Essayons d'analyser cette ligne :

Code : Tout sélectionner

If _IsChecked($Cb1) Then $Res = $Res & " CB1 "
Cette ligne contient 4 section distinctes.
1 - IF : Ceci est une instruction de test de condition. Elle veut dire SI
2 - _IsChecked($Cb1) : Ceci est la fonction de test du contrôle (CheckBox).
Et en l'occurrence, nous testons le contrôle $Cb1 qui est la première CheckBox.
Le résultat de cette opération nous renvoie 0 si la checBox n'est pas cochée, ou 1 si elle l'est.
3 - Then Ceci est l'instruction d'exécution en fonction du résultat de l'instruction précédente.
4 - $Res = $Res & " Cb1 " : Ceci est une petite manipulation de chaine de caractère. Au départ je déclare la variable pour l'utilisée avec l'instruction DIM.
Donc Dim $Res initialise une variable vide en vue de son utilisation.
Ensuite la ligne $Res = $Res & " Cb1 " rajoute tout simplement la chaine de caractère ' CB1 ' dans cette variable. Si par la suite je fait ceci : $Res = $Res & " Cb2 ", j'ai donc (Si la première condition à été réalisée) :
" Cb1 " = " Cb1" & " Cb2" ce qui nous donne : " Cb1 Cb2 ". Comme vous le voyez, ce n'est qu'un simple ajout de caractère dans une chaine.

Pour résumer, la ligne d'instruction If _IsChecked($Cb1) Then $Res = $Res & " CB1 " pourrait ce traduire par :
Si _IsChecked($Cb1) est égal à 1 alors ajoute la chaine de caractère " CB1 " à la fin de la variable $Res.

Voilà, je pense que je ne peut pas faire plus simple en explication.
Donc pour votre code vous avez simplement garder la partie ajout de chaine à la variable en trop.
Votre code devrait ressembler plutôt à ceci :

Code : Tout sélectionner

Si(#1) L'instruction est vraie alors
    Si(#2) l'instruction est vraie alors
         fait cette commande
         fait cette commande
    Sinon
         fait cette commande
    Fin de Si(#2)
Fin de Si(#1)
Les #1 et #2 ne sont là que pour identifier l'ordre des instructions. Vous pouvez imbriquer beaucoup de conditions, mais il vous faut à chaque fois les finir par EndIf.
Donc si vous avez 10 instructions IF imbriquées, vous aurez à la fin les 10 EndIf respectifs.
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é".
cyberyeye
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 30 déc. 2008 13:40
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#5

Message par cyberyeye »

Explication tout simplement parfaite ! Merci beaucoup pour votre aide precieuse !
Je me suis effectivement aperçu que mes test ne fonctionnais pas, le code s'appliquais meme si je decochai cb1 et cochai une autre CB. Avec votre exemple, ce probleme est résolu !

Si je comprend bien $Res = $Res & " CB1 " du 1er exemple etait mis en place pour que "MsgBox" puisse afficher quel CB etait cochés: c'est bien ça ? Je suppose que oui ?

J'ai modifier mon script de votre exemple, je procede donc ainsi (ça fonctionne j'ai tester)

Code : Tout sélectionner

        Case $Button1
; j'ai virer le Dim et leur appelle dans les "Then" et "MsgBox"

If _IsChecked($Cb1) Then
    If FileExists(@HomeDrive & "\Temp" & "\Dossier1") Then
    DirCreate(@WorkingDir & "\Dossier1")
    _FileCopy(@HomeDrive & "\Temp" & "\Dossier1",@WorkingDir & "\Dossier1")
    Sleep(1000)
        Else
    MsgBox(64,"Erreur 001", "Dossier source inexistant, sauvegarde impossible:" & @CRLF & @HomeDrive & "\Temp" & "\Dossier1")
        EndIf
    EndIf
                
If _IsChecked($Cb2) Then
    If FileExists(@HomeDrive & "\Temp" & "\Dossier2") Then
    DirCreate(@WorkingDir & "\Dossier2")
    _FileCopy(@HomeDrive & "\Temp" & "\Dossier2",@WorkingDir & "\Dossier2")
    Sleep(1000)
        Else
    MsgBox(64,"Erreur 002", "Dossier source inexistant, sauvegarde impossible:" & @CRLF & @HomeDrive & "\Temp" & "\Dossier2")
        EndIf
    EndIf
Je vais maintenant essayer de mettre en place une variable pour chaque chemin, pour l'instant ça ne marche pas, j'ai pas encore trouver la bonne syntaxe mais je continue mes test ^^

J'ai encore une autre question le tout etant placer dans la boucle principal "While 1 / WEnd" lorsque le code des bouton est fini le script se ferme (c'est logique vu qu'il y a exit), comment faire alors pour sortir la partie du code de ces boutons (section case) dans le source afin que la GUI reste ouverte lorsque l'execution du code est terminé ?

J'ai essayer de sortir le code des CB (de Case à EndIf) et de le mettre dans un "Select / EndSelect" (en dehors de While 1 / WEnd) il n'y a pas d'erreur... mais le code n'est plus actif, c'est donc pas la bonne façon de proceder... Une piste pour m'eclairer ?

Que de question, mais votre aide n'est pas inutile, j'avance :-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#6

Message par Tlem »

cyberyeye a écrit :Si je comprend bien $Res = $Res & " CB1 " du 1er exemple etait mis en place pour que "MsgBox" puisse afficher quel CB etait cochés: c'est bien ça ? Je suppose que oui ?
C'est tout à fait ça.
cyberyeye a écrit :Une piste pour m'eclairer ?
Personnellement, je vous conseil l'utilisation de fonctions.
Une fonction est une partie de code qui ce trouve dans le code (généralement à la fin) et que l'on appel au moment opportun.

Le plus simple serait de faire votre GUI, puis dans la boucle d'attente (While/Wend) la détection de l'appui sur le bouton OK et dans la partie Case du bouton OK faites la détection des CheckBox cochées et en fonction de la Checkbox, vous appelez la fonction correspondante au code de l'installation associée.
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é".
cyberyeye
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 30 déc. 2008 13:40
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#7

Message par cyberyeye »

J'ai fait plein de test, après avoir perdu un paquets de cheveux, je m'avoue vaincu :(
J'ai fait des test basé la dessus ainsqie que d'autre idée farfelu:

Code : Tout sélectionner

While 1 ;
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
       
        Case $Button1 
            If _IsChecked($Cb1) Then
                    [color=#FF0000]call _test()[/color]
                Else
                    MsgBox(64,"Erreur 001", "Dossier source inexistant, sauvegarde impossible:" & @CRLF & @HomeDrive & "\Temp" & "\Dossier1")
            EndIf
        Exit
    EndSwitch
WEnd

Func [color=#FF0000]_test()[/color]
    _FileCopy(@HomeDrive & "\Temp" & "\Dossier1",@WorkingDir & "\Dossier1")
EndFunc
 
... c'est pas bon, quelque soit la variante j'ai droit à un message d'erreur...

N'etant pas programmeur je patauge de nouveau, il me faudrait à nouveau un petit exemple de source avec une checkbox qui reprend votre idée d'externalisation avec une fonction appeller dans la boucle (j'ai fouiller pourtant une heure dans la doc et sur le forum, google).

Re-mille merci d'avance :-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#8

Message par Tlem »

Sur l'exemple que je vous ai donné précédemment et en se basant sur vos information, voici ce que cela pourrait donner :
► Afficher le texte
J'aurais pu faire une fonction par cas, mais en programmation on essaie d'optimiser au maximum et comme la fonction de copie des dossiers fait la même chose pour chaque CheckBox alors on optimise.

Vous n'avez pas besoin de faire un Call pour appeler une fonction et comme vous pouvez le constater, on peut aussi envoyer des informations à cette fonction, pour lui faire faire des action répétitives.
Il faut savoir aussi qu'une fonction peut renvoyer des informations au code principal, mais vous verrez sans doute ceci plus tard.
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é".
cyberyeye
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 30 déc. 2008 13:40
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#9

Message par cyberyeye »

Encore une fois merci :-)

Petit hic, si le dossier "cible" n'existe pas, un fichier (vide 0 octet sans extention) est crée portant le nom du dossier source. Au lieu de recrée/recopier l'arborescence du "source vers la cible", petite capture:

Image

En modifiant légerement le script dans les checkbox de la boucle principal, en ajoutant ceci, ça fonctionne, la copie de dossier est fait avec les fichiers contenu dedans:
► Afficher le texte
Mais hélas... Si le dossier source "dossier1" contient un sous-dossier, le sous dossier (ex: /Temp/dossier1/sousdossier1) n'est pas copier (ni les fichiers de ce sous dossiers bien sur)! Et là, bing, je rebloque :(

D'ou ma nouvelle question comment utiliser la fonction "CopieFichiers" avec DirCopy, le but étant de copier le dossier source "dossier1" ainsi que ces sous-dossiers et fichiers respectif... J'avoue ne pas saisir l'astuce une fois de plus :(

...en tout cas grace à vous, j'avance, encore merci de prendre le temps de m'aider :-)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#10

Message par Tlem »

Autant pour moi, j'ai été un peut vite dans le script que je vous ais proposé.
En fait il faut utiliser la fonction DirCopy au lieu de FileCopy pour pouvoir copier un dossier.
Certes il faut utiliser FileExists pour vérifier si le dossier/Fichier existe, mais pour de la copie, il faut utiliser la fonction adéquate.

J'ai modifié le code de mon post précédent pour prendre en compte ceci.
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é".
cyberyeye
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 30 déc. 2008 13:40
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#11

Message par cyberyeye »

C'est... parfait ! C'est exactement ce que je cherchais à faire :-)
A partir de là je vais pouvoir me debrouiller, je posterai bien sur le resultat de mon ebauche du script !

J'ai juste une petite question sur la fonction "CopieDossiers". Entre:
If FileExists($Src) Then
; On contrôle que la copie de $Src vers $Dst c'est bien déroulée.
If Not DirCopy($Src, $Dst, 1) Then
Il y a un commentaire, mais rien après le "Then". Je ne vois nul part ou Dircopy est "créer" ??? Comment AutoIt "sait-il" donc que c'est un DirCopy apres le "then" ? Serait-ce du à ça:
Func _CopieDossiers($Src, $Dst)
Mais c'est la source et destination, hors nulle part je ne vois Then DirCopy, c'est ça que je ne comprend pas.

En tout cas, le code fonctionne parfaitement :-)

Edit: j'en conclu que c'est le nom de la fonction: CopieDossiers = DirCopy, c'est ça ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#12

Message par Tlem »

Bien, je vais essayer de décoder pour vous la fonction _CopieDossiers() :

Code : Tout sélectionner

Func _CopieDossiers($Src, $Dst) ; Je crée une fonction qui reçoit en argument deux paramètres ($Src et $Dst) qui sont des variables.
    If FileExists($Src) Then    ; Si le fichier source ($Src) existe alors ...
        If Not DirCopy($Src, $Dst, 1) Then  ; Sur la même ligne de code, on fait la copie du dossier $Src vers $Dst et on contrôle le résultat.
                                            ; Si le résultat est négatif (If NOT) alors on exécute la MsgBox.
            MsgBox(16,"Erreur", "Erreur lors de la copie du dossier :" & @CRLF & $Src)  ; Affichage du message d'erreur.
        EndIf ; Fin du IF de If Not DirCopy
    Else ; Sinon si le dossier ($Src) n'existe pas alors ...
        MsgBox(16,"Erreur", "Dossier source inexistant, sauvegarde impossible:" & @CRLF & $Src) ; Affichage du message d'erreur.
    EndIf ; Fin du IF de If FileExists($Src)
EndFunc ; Fin de la fonction.
Je vous donne ce coup de main pour que vous arriviez à comprendre la philosophie AutoIt.
Ce post servira surement d'exemple, mais il vous faut aussi fournir un peut de travail de votre coté et essayer de comprendre par déduction et par la lecture de la documentation des commandes pour comprendre certaines choses car je ne pourrais pas vous fournir ce type d'aide régulièrement.
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é".
cyberyeye
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 30 déc. 2008 13:40
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#13

Message par cyberyeye »

Croyez moi, je me casse la tête (ou plutot les neurones) à essayer de decrypter la doc, et plein de script ! Mais c'est pas evident, sans votre aide precieuse, je ne serai pas parvenu à lier plusieurs checkbox à un bouton.

Concernant ma question precedent, c'est parce que je pensais que le code devrait contenir l'instructions ou commande "DirCopy" dans la fonction, j'etais certain que la fonction doit contenir DirCopy, d'ou mon etonnement de ne voir que "If FileExists($Src) Then"
If FileExists($Src) Then Dircopy($Src, $Dst) then
If Not DirCopy($Src, $Dst, 1) Then
Ce n'est pas le cas, mais c'est cela qui m'a sembler bizarre le fait que apres Then il n'y ai aucune instruction ! Je n'avais pas saisi la nuance en clair: que c'etait If Not DirCopy($Src, $Dst, 1) qui primait comme instructions tout betement dans cette fonction "CopieDossiers" ...

J'avance à ... petit pas, mais pour le "noob" que je suis, c'est des pas de géants :D

Prochaine etape, inserer le code de cet exemple dans ma GUI, et tester ça, ce sera sans doute fait d'ici ce soir.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#14

Message par Tlem »

En fait, ce n'est pas tout à fait ce que vous dites, bien que au final le résultat est le même.
En réalité, il faut voir ceci comme des conditions imbriquées.
J'espère que ceci sera clair :

Code : Tout sélectionner

Si le fichier $Src existe alors fait ceci :
    Teste si la copie de $Src vers $Dst c'est bien déroulée et si ca se passe pas bien fait ceci :
        affiche une boite de dialogue d'erreur
    fin du bloc de test de la copie
Sinon si le fichier $Src n'existe pas fait ceci :
    affiche une boite de dialogue d'erreur
Fin du bloc de test de l'existance du fichier $Src
En réalité dans un bloc de condition on pourrait mettre de nombreuses instructions, tout dépend de ce que vous devez faire en fonction des conditions.

Je ne sais pas si ceci vous éclairera ou vous embrouillera, mais cela vous montrera un exemple de condition complexe que je vous ais traduit en texte clair.

Code : Tout sélectionner

[color=#40BF00]Si(#1) la condition #A est vraie alors[/color]                  ; If ... Then
        [color=#0000FF]Si(#2) la condition #B est fausse alors[/color]             ; If ... Then
                [color=#FFBF00]Instruction #AA[/color]
                [color=#FFBF00]Instruction #AB[/color]
                [color=#FF00FF]Si(#3) la condition #C est vraie alors[/color]          ; If ... Then
                        [color=#FFBF00]Instruction #BA[/color]
                [color=#FF00FF]Fin du bloc (#3)[/color]                                ; EndIf
        [color=#0000FF]Sinon Si la condition #D est fausse alors[/color]           ; ElseIf ...        
                [color=#FFBF00]Instruction #CA
                Instruction #CB[/color]
        [color=#0000FF]Sinon [/color]                                              ; Else
                [color=#FFBF00]Instruction #DA[/color]
        [color=#0000FF]Fin du bloc (#2)[/color]                                    ; EndIf
[color=#40BF00]Sinon Si la condition #E est vraie alors[/color]                ; ElseIf ...
        [color=#FFBF00]Instruction #EA[/color]
[color=#40BF00]Sinon [/color]                                                  ; Else
        [color=#FFBF00]Instruction #FA[/color]
[color=#40BF00]Fin du bloc (#1)[/color]                                        ; EndIf
 
Regardez bien la structure des blocs de conditions.
J'avoue qu'il y à de quoi s'arracher les cheveux parfois, mais tout est logique.
Il suffit de suivre les blocs par condition.
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é".
cyberyeye
Niveau 1
Niveau 1
Messages : 8
Enregistré le : mar. 30 déc. 2008 13:40
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#15

Message par cyberyeye »

J'avoue que j'ai un peu de mal à suivre cette subtilité ! Mais j'en comprend le sens, effectivement avec un exemple aussi detailler c'est beaucoup plus simple (et clair) à comprendre :-)

En fait c'est un peu ce que j'essaie de faire, sans savoir comment le faire réellement :lol:

J'ai un peu etoffer mon script, basé sur les exemples précedent, le script aura 4 but:
- Sauvegarder X dossiers de XP et permettra la restauration de ceux-ci
- Idem mais pour vista

Pour l'instant j'ai mis que le code pour faire la sauvegarder des dossiers sous XP, la restauration n'est pas encore là (pas eu le temps). Et pour vista, je le ferai en derniers (donc là aussi c'est pas encore dans le script).

J'ai utiliser votre fonction de copie utilisant DirCopy, et la boucle des checkbox avec mon code dessus. Et evidemment une Gui (fait avec Koda).

Voici le script, le code "Sauvegarder" de l'ongler XP, fonctionne parfaitement, j'ai ajouter qlq conditions et msgbox, c'est pas parfait mais c'est un debut. C'est un code "simple" donc je m'en sort aisement, meme si je me doute qu'en nombre de ligne il y a moyen de faire mieux.
► Afficher le texte
Peut-etre une idée sur un élément à modifier ou améliorer ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Besoin d'aide avec checkbox et bouton !

#16

Message par Tlem »

Le code semble fonctionner et est lisible.
Au niveau amélioration, au lieu d'afficher un message par Checkbox pour Vista, j'aurais mis ceci MsgBox(64, "Avertissement", "Cette fonction n'est pas encore disponbile dans cette version.") juste après Case $bt_vista_bak et j'aurais commenté (mis le ; en début de ligne) les tests des CheckBoxs.

Ensuite, pour rendre le code encore un peut plus clair, il est possible de mettre tout les tests du Case $bt_xp_bak dans une fonction séparée, à la fin du code ou dans un fichier à part (il vous suffira dans ce cas de le rajouter en #include).
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