[R] Compte a rebour

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
astaroth
Niveau 4
Niveau 4
Messages : 65
Enregistré le : dim. 28 oct. 2007 15:22
Status : Hors ligne

[R] Compte a rebour

#1

Message par astaroth »

Bonjour!

J'aimerai savoir si c'est possible d'integrer un compte a rebour dans une GUI, qui s'active après avoir cliqué sur un Label ? Si oui c'est possible que ce compte a rebour continu meme en ayant fermer le programme (en laissant un fichier texte qui indique l'heure de debut par exemple)?

P'tit bout de code pour exemple:

Code : Tout sélectionner

#include <GUIConstants.au3>

GUICreate("blabla", 400, 280)
GUICtrlCreatePic("C:\Users\Administrateur\Desktop\Images\Capturer.jpg",0,0, 400,280)

$Button_1 = GUICtrlCreateButton ("test",  10, 30, 100)
GUICtrlSetCursor(-1, 0)
$Button_2 = GUICtrlCreateLabel("Compte a rebour", 340, 250, 45, 18)
GUICtrlSetColor(-1, 0xff0000)
GUICtrlSetCursor(-1, 0)

GUISetState ()      

; Run the GUI until the dialog is closed
While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
        Case $msg = $Button_1
            Run('Notepad.exe')    
        Case $msg = $Button_2
            MsgBox(0, 'Testing', 'Button 2 was pressed') 
    EndSelect
Wend
Merci :)
Modifié en dernier par tolf le mer. 07 janv. 2009 21:45, modifié 2 fois.
Raison : mise à jour des balises de code
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11784
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [...] Compte a rebour

#2

Message par Tlem »

astaroth a écrit :J'aimerai savoir si c'est possible d'integrer un compte a rebour dans une GUI, qui s'active après avoir cliqué sur un Label ?
Oui

astaroth a écrit :Si oui c'est possible que ce compte a rebours continu même en ayant fermer le programme (en laissant un fichier texte qui indique l'heure de début par exemple)?
Non

Pour ce genre de manipulation, il vous faudra passer par un second script, car quand vous fermer le programme, le code s'arrête et donc pas de compte à rebours possible.
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
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Compte a rebour

#3

Message par sylvanie »

Pour la première partie, indépendement de l'aspect fermeture du programme, il faudra passer par un adlibenable.

Pourquoi ?
parce que la gestion d'un compte à rebours consiste à attendre une seconde, updater un compteur et reboucler jusqu'à 0.
Grossièrement

Code : Tout sélectionner

for $i=30 to 0 step -1
 sleep(1000)
Next
Or le problème ici est que pendant 30 secondes, on va rester prisonnier de cette boucle, et tout tes contrôles seront inutilisables (fermeture, autre bouton ...)

donc pour éviter ceci, il faut écrire une fonction qui ne fait que retrancher 1 à une variable de compteur, updater le label et tester si la variable est tomber à 0 pour arr^ter le compteur. Puis lancer cette fonction (nommons la toto) via adlibenable("toto",1000) lors du click du label
Ceci va déclancher un faux mini thread qui va exécuter toto toutes les 1000 ms, mais qui va surtout rendre tout de suite la main au script pour ne pas bloquer.

A la fin du compte à rebours, il faudra faire un adlibdisable() pour arrêter ce petit thread.
Modifié en dernier par tolf le mer. 07 janv. 2009 21:46, modifié 1 fois.
Raison : mise à jour des balises de code
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
astaroth
Niveau 4
Niveau 4
Messages : 65
Enregistré le : dim. 28 oct. 2007 15:22
Status : Hors ligne

Re: [..] Compte a rebour

#4

Message par astaroth »

Heu..

Un petit exemple? :D
Avatar du membre
sylvanie
Niveau 11
Niveau 11
Messages : 1556
Enregistré le : jeu. 26 juil. 2007 21:31
Localisation : Paris
Status : Hors ligne

Re: [..] Compte a rebour

#5

Message par sylvanie »

J'ai repris ton code en y mettant la fonctionnalité suivante sur le label :
1 - lance le cpt à rebours si il n'est pas déjà lancé
2 - demande si on veut l'arrêter sinon

comme ça on verra un exple de suspension et reprise
j'ai fait plusieurs petites fonctions pour les "routines", pour améliorer la visibilité, concept du diviser pour mieux reigner.
► Afficher le texte
Modifié en dernier par tolf le mer. 07 janv. 2009 21:46, modifié 1 fois.
Raison : mise à jour des balises de code
Toi qui cherche à mettre le doigt sur la solution, appuie sur F1.
astaroth
Niveau 4
Niveau 4
Messages : 65
Enregistré le : dim. 28 oct. 2007 15:22
Status : Hors ligne

Re: [..] Compte a rebour

#6

Message par astaroth »

:o

Merci beaucoup Sylvanie !
Répondre