[R] Problèmes GUI

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
linvi
Niveau 2
Niveau 2
Messages : 25
Enregistré le : jeu. 10 juil. 2008 15:31
Status : Hors ligne

[R] Problèmes GUI

#1

Message par linvi »

Bonjour,

Je m'intéresse au langage AutoIt depuis 3 jours seulement, et je bloque sur la gestion des Interfaces GUI.

Voilà mon probleme, lorsque je lance un script possédant du code GUI je me retrouve trés souvent avec des erreurs dès lors que j'essaye de donner des actions à des boutons.
Il existe un topic de ce forum ou l'on peu par exemple trouver le code suivant:
$GUI = GUICreate("Ma GUI Download", 300, 400, -1, -1)

$Telecharger = GUICtrlCreateButton("Télécharger" , 161, 125, 80 , 25) ; bouton
$progressbar1 = GUICtrlCreateProgress (30 , 188 , 200 , 20) ; processbar
GUICtrlSetColor (- 1 , 32250) ;thème Windows

GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Telecharger
Global $Url = "http://download.mozilla.org/?product=fi ... ng=fr";ici le lien du logiciel à dl
InetGet( $Url , @DesktopDir&"/FireFox.exe", 1, 1);il sera dl sur le bureau
$FileSize = InetGetSize ( $Url ) ; ceci calcul la taille de ton fichier qui se trouve sur internet
While @InetGetActive
$i = TrayTip("Téléchargement", Int ( ( @InetGetBytesRead * 100 ) / $FileSize )&" %", 10, 16)
GUICtrlSetData ( $progressbar1 , Int ( ( @InetGetBytesRead * 100 ) / $FileSize ) )
Sleep(50)
Wend
Sleep(1000)
GUICtrlSetData ( $progressbar1 , 0 )
EndSwitch
WEnd
Tout comme de nombreux d'autres exemples (même ceux du fichier d'aide) j'obtiens toujours des erreurs lors de la compilation.
Dans un premier temps je vois que le code que j'ai tapé est mal indenté puisque le While principal s'arrête au niveau du Switch $nMsg

Lors de la compilation, cette erreur se confirme:

J'ai egalement les erreurs suivantes:

Code : Tout sélectionner

ERROR: syntax error
    Switch $nMsg 
           ^
Je ne comprend pas puisque c'est bien une variable que je met en parametre de mon Switch.

Code : Tout sélectionner

ERROR: missing Wend
       Case
      ^

Code : Tout sélectionner

REF: missing Wend.
While
^

Code : Tout sélectionner

ERROR: syntax error
       Endswitch
      ^
Merci

PS: Je tiens à ajouter que si le compilateur me demande d'ignorer les erreurs et de continuer le code fonctionne correctement sauf que je ne peux pas quitté le programme normalement et celui ci tourne en boucle
Modifié en dernier par linvi le mar. 15 juil. 2008 10:46, modifié 1 fois.
"Le savoir est une arme....
Maintenant tu sais qu'il est important que les gens qui votent pour moi soient désarmés."

Du stylo
SurPriseS
Niveau 6
Niveau 6
Messages : 291
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Problèmes GUI

#2

Message par SurPriseS »

J'ai essayer le code donnée et pas eu de problème de compilation, tu es sur d'avoir la bonne version ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11793
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problèmes GUI

#3

Message par Tlem »

Quelle version de AutoIt utilisez vous ?
Avez vous installé Scite4AutoIt ?
Avez-vous donné dans l'exemple, l'intégralité du code ?

A première vue, il manque les includes du début d'un script AutoIt avec GUI.
Dans les exemples de scripts, en selon les fonctions et variables utilisées, vous devez rajouter au début du fichier une ou plusieurs lignes de ce type :

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Dans le forum Fonction et UDF, il y à un script qui peut vous aider à contrôler ceci => ICI
Si vous l'essayez avec le script cité précédemment, il ne vous trouvera rien, mais si vous rajoutez la variable de sortie du script, là ça fonctionne.

J'ai fai un copier/coller du code cité, et il fonctionne parfaitement chez moi (AutoIt version 3.2.0.12).
En ce qui concerne la fermeture du script, il est normal que ca ne fonctionne pas, car il manque ceci dans la liste de Case de la boucle While 1 :

Code : Tout sélectionner

Case $GUI_EVENT_CLOSE
     ExitLoop
 
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é".
linvi
Niveau 2
Niveau 2
Messages : 25
Enregistré le : jeu. 10 juil. 2008 15:31
Status : Hors ligne

Re: [..] Problèmes GUI

#4

Message par linvi »

J'avais les versions 3.2.10.0 de AutoIt et 1.76 de Scite.
Je viens de mettre à jour mes versions de AutoIt et de Scite et cela m'a permis de compilé sans problème.

Concernant la boucle pour quitter l'application j'avais compris comment faire mais lorsque j'ajoutais

Code : Tout sélectionner

Case $GUI_EVENT_CLOSE
j'avais le droit à un "required include" et lorsque je le mettais cela ne fonctionnait plus.

Je tiens à vous remercier car je n'aurais jamais pensé que mes problèmes puissent avoir lieu à cause de la version que j'utilisais.

Merci pour tout.

J'ajoute ici le code de l'application si cela pouvait intéressé des gens:

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
$GUI = GUICreate("Ma GUI Download", 300, 200, -1, -1)

$Telecharger = GUICtrlCreateButton("Télécharger" , 161, 125, 80 , 25) ; bouton
$progressbar1 = GUICtrlCreateProgress (10 , 170 , 280 , 20) ; processbar
GUICtrlSetColor (- 1 , 32250) ;thème Windows

GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $Telecharger
            Global $Url = "http://download.mozilla.org/?product=firefox-3.0rc2&os=win&lang=fr";ici le lien du logiciel à dl
            InetGet( $Url , @DesktopDir&"/FireFox.exe", 1, 1);il sera dl sur le bureau
            $FileSize = InetGetSize ( $Url ) ; ceci calcul la taille de ton fichier qui se trouve sur internet
            While @InetGetActive
                $i = TrayTip("Téléchargement",  Int ( ( @InetGetBytesRead * 100 ) / $FileSize )&" %", 10, 16)
                GUICtrlSetData ( $progressbar1 , Int ( ( @InetGetBytesRead * 100 ) / $FileSize ) )
                Sleep(50)
                $nMsg = GUIGetMsg()
                    Switch $nMsg
                        Case $GUI_EVENT_CLOSE
                            Exit    
                    EndSwitch
            Wend
            Sleep(1000)
            GUICtrlSetData ( $progressbar1 , 0 )
        Case $GUI_EVENT_CLOSE
            ExitLoop
    EndSwitch
WEnd
 
"Le savoir est une arme....
Maintenant tu sais qu'il est important que les gens qui votent pour moi soient désarmés."

Du stylo
Répondre