Page 1 sur 1

[EX] Petite Horloge

Posté : dim. 07 nov. 2010 13:52
par sablier94
Hello,

Après de longues heures de travail (notamment pour essayer qu'elle ne clignote pas trop), j'ai créé une petite horloge.
Développé sous windows seven. Je peux fournir l'exécutable sur demande. J'ai mis des remarques sur chaque-unes de mes lignes, ça fait beaucoup, mais c'est un exemple pour que les débutants comprennent le code. :wink:

Code : Tout sélectionner

#include <GUIConstants.au3>  ;On inclut le fichier pour faire les intefaces
#Include <GuiEdit.au3> ;On inclut le fichier pour pouvoir utiliser la fonction _GUICtrlEdit_SetText
#include <ComboConstants.au3>


HotKeySet("{esc}", "_quit") ;Si on appuye sur la touche escape alors on utilise la fonction _quit
HotKeySet("{m}", "_menu") ;Si on appuye sur la touche m alors on utilise la fonction _menu

Func _quit() ;début de la fonction _quit
Exit ;On quitte la programme
EndFunc ;fin de la fonction

Func _menu()
GUIDelete() ;On efface les autres fenêtres
#Region ### START Koda GUI section ### ; début de la création de l'interface
$color2 = IniRead("horloge_settings.ini","preferences","color","Noir") ;On lit dans le fichier .ini quelle est la couleur de fond (noir est par défaut)
If $color2 = "Noir" Then $color = 0x000000 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
If $color2 = "Vert" Then $color = 0x008000 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
If $color2 = "Bleu" Then $color = 0x008080 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
If $color2 = "Rouge" Then $color = 0x800000 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
If $color2 = "jaune" Then $color = 0x808000 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
$menu = GUICreate("Menu Horloge by sablier94", 388, 168, 305, 236, BitOR($WS_SYSMENU,$WS_POPUP), $WS_EX_TOOLWINDOW) ;Quelques propriétés de la fenêtre
GUISetBkColor($color) ;On applique la couleur de fond grâce à la variable
$couleurtxt = GUICtrlCreateLabel("Couleur de fond :", 16, 24, 104, 20) ;On affiche du texte
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif") ;Quelques propriétés du texte
GUICtrlSetColor(-1, 0xFFFFFF) ;Quelques propriétés du texte
$couleur = GUICtrlCreateCombo("Couleur", 152, 24, 105, 25, BitOR($CBS_DROPDOWNLIST,$CBS_AUTOHSCROLL)) ;On affiche une liste pour choisir les couleurs
GUICtrlSetData(-1, "|Noir|Bleu|Vert|Jaune|Rouge","noir") ;liste des couleurs
$Enregistrer = GUICtrlCreateButton("Enregistrer", 112, 104, 129, 33, 0) ;Boutton pour enregistrer
$titretxt = GUICtrlCreateLabel("Titre :", 16, 64, 37, 20) ;On affiche du texte
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$titreinput = iniRead("horloge_settings.ini","preferences","titre","Horloge by Sablier94 / Press [M] for Settings & [Esc] for exit") ;lecture du titre dans le fichier .ini
$titre = GUICtrlCreateInput($titreinput, 64, 64, 225, 21) ;input pour choisir un titre
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ### ;Fin de l'interface

While 1 ;Début de la boucle
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE ;Si on appuye sur la croix
         Exit ;Alors on ferme
      Case $enregistrer ;Si on appuye sur enregistrer :
         $couleur = GUICtrlRead($couleur) ;On lit la couleur choisie dans la liste des couleurs
         $titre = GUICtrlRead($titre) ;On lit le titre
         IniWrite("horloge_settings.ini","preferences","color",$couleur) ;On écrit la couleur dans le fichier .ini
         IniWrite("horloge_settings.ini","preferences","titre",$titre) ;On écrit la couleur dans le fichier .ini
         GUIDelete() ;On efface toutes les fenêtres
        ShellExecute(@ScriptFullPath) ;On rouvre le programme
         Exit ;on ferme le programme
   EndSwitch ;fin du switch
WEnd ;fin de la boucle
EndFunc ;Fin de la fonction _menu

Local $heuredepart = @HOUR, $minutesdepart = @MIN, $secondesdepart = @SEC, $WS_SYSMENU,$WS_POPUP, $WS_EX_TOOLWINDOW ;On définit quelques variables pour pouvoir les utiliser partout dans le programme

$color2= IniRead("horloge_settings.ini","preferences","color","Noir") ;On lit la couleur dans le fichier .ini (Noir par défaut)
If $color2 = "Noir" Then $color = 0x000000 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
If $color2 = "Vert" Then $color = 0x008000 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
If $color2 = "Bleu" Then $color = 0x008080 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
If $color2 = "Rouge" Then $color = 0x800000 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
If $color2 = "jaune" Then $color = 0x808000 ;On définit la couleur en fonction de la variable trouvée dans le fichier .ini
#Region ### START Koda GUI section ### ;Début de la création de l'interface
$titre = iniRead("horloge_settings.ini","preferences","titre","Horloge by Sablier94 / Press [M] for Settings & [Esc] for exit") ;création de la feneêtre
$Horloge = GUICreate($titre, 462, 70, 288, 165, BitOR($WS_SYSMENU,$WS_POPUP), $WS_EX_TOOLWINDOW) ;Quelques propriétés de la fenêtre
GUISetBkColor($color) ;On applique la couleur de fond grâce à la variable
$ilesttxt = GUICtrlCreateLabel("Il est", 16, 10, 41, 28) ;On affiche du texte
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")  ;Quelques propriétés du texte
GUICtrlSetColor(-1, 0xFFFFFF) ;Quelques propriétés du texte
$heure = GUICtrlCreateLabel($heuredepart, 64, 10, 24, 28) ;On affiche du texte qui contient une variable
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$heuretxt = GUICtrlCreateLabel("heure", 99, 10, 54, 28) ;On affiche du texte
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$minutes = GUICtrlCreateLabel($minutesdepart, 160, 10, 24, 28) ;On affiche du texte qui contient une variable
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$minutestxt = GUICtrlCreateLabel("minutes", 194, 10, 70, 28) ;On affiche du texte
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$secondes = GUICtrlCreateLabel($secondesdepart, 291, 10, 24, 28) ;On affiche du texte qui contient une variable
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$secondestxt = GUICtrlCreateLabel("secondes", 324, 10, 87, 28) ;On affiche du texte
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
$ettxt = GUICtrlCreateLabel("et", 269, 10, 19, 28) ;On affiche du texte
GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFFFFFF)
GUISetState(@SW_SHOW) ;Quelques propriétés
#EndRegion ### END Koda GUI section ### ;Fin de l'interface

While 1 ;Début de la boucle
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $GUI_EVENT_CLOSE ;Si on appuye sur la croix
         Exit ;Alors on ferme
    EndSwitch

 If _GUICtrlEdit_GetText($heure) <> @HOUR Then _ ;si l'heure affichée est différente de l'heure réel
 _GUICtrlEdit_SetText($heure, @HOUR) ;On édite le texte de la GUI $heure avec l'heure réelle
sleep(50) ;On fait une pause de 50 milisecondes
If _GUICtrlEdit_GetText($minutes) <> @MIN then _ ;si les minutes affichées sont différentes de l'heure réel
_GUICtrlEdit_SetText($minutes,@MIN);On édite le texte de la GUI $minutes avec les minutes réelles
sleep(50) ;On fait une pause de 50 milisecondes
If _GUICtrlEdit_GetText($secondes) <> @SEC Then _ ;si les secondes affichées sont différentes de l'heure réel
_GUICtrlEdit_SetText($secondes,@SEC);On édite le texte de la GUI $secondes avec les secondes réelles
sleep(250) ;On fait une pause de 250 milisecondes pour ne pas surcharger le processeur à cause de la boucle
WEnd ;Fin de la boucle
 

Re: [EX] Petite Horloge

Posté : dim. 07 nov. 2010 15:55
par Habibsbib
C'est quand même très simple comme script...

Re: [EX] Petite Horloge

Posté : dim. 07 nov. 2010 16:29
par timmalos
@Habisbib, c'est peut être simple,mais c'est un script sans prétention, ca fait son boulot très bien, c'est commenté, il y a même un paramétrage possible, bref faites déjà aussi bien et on en reparlera.

Merci Sablier94 pour ce partage.

Re: [EX] Petite Horloge

Posté : dim. 07 nov. 2010 16:54
par Jerome
Coucou,


Merci pour le partage.
Etant donnée que c'est un script exemple, il vous est normalement possible et autoriser d'utiliser le code couleur.



Jérôme

Re: [EX] Petite Horloge

Posté : dim. 07 nov. 2010 17:33
par sablier94
Hello,

Oui, c'est pas très dur, pourtant, ça m'a pris du temps (à trouver la fonction _GUICtrlEdit_SetText, à essayer de faire qu'il clignote le moins possible et à pouvoir changer quelques paramètres...) et le script est un exemple de script que j'ai fait pour les débutants. Je vais essayer de l'améliorer (date, plus d'options, etc...) dès que j'en aurais le temps.

Ok, je vais le mettre en couleurs alors :D

EDIT : J'ai pas trouvé comment faire :roll:

Par contre, petite question :

Sur koda, j'ai créé ma fenêtre avec ce style : Image
Pourtant, quand j'utilise le code, ça me fait une fenêtre normale, mais sans la croix, le bouton redimensionnement et l'icône.
Ça va aussi, mais j'aurais bien voulu avoir la fenêtre carrée :mrgreen:

Merci

Re: [EX] Petite Horloge

Posté : dim. 07 nov. 2010 19:11
par bloodwolff
Wow, sa t'as pris plus de temps pour commenter que pour faire le script ? :lol:

Nah , sérieusement bravo je pense pas que j'aurai un jour le courage de commenter toutes les lignes d'un de mes scripts :roll:

Re: [EX] Petite Horloge

Posté : lun. 08 nov. 2010 13:22
par Iste
Salutations,

Déja merci pour ce partage, enssuite :
sablier94 a écrit :à trouver la fonction _GUICtrlEdit_SetText, à essayer de faire qu'il clignote le moins possible et à pouvoir changer quelques paramètres...
J'ai fais des tests avec un simple GUICtrlSetData(), et le résultat est le meme chez moi. Pourriez vous m'expliquer ce choix ? Le comportement est meilleur chez vous ?

Sinon, pour éviter les clignotement, une solution est de mettre a jour les label que si le nouveau texte est différent de celui déja affiché ;)

A part ca, chez moi je changement de couleur fait tout planter

Re: [EX] Petite Horloge

Posté : lun. 08 nov. 2010 13:26
par Jerome
Iste a écrit :A part ca, chez moi je changement de couleur fait tout planter
Idem.

Re: [EX] Petite Horloge

Posté : lun. 08 nov. 2010 13:45
par ricky
Hello,

pas mal et bien commenté...

Il y a un petit bug, quand on est dans le menu, si on laisse sur couleur (on a pas fait de choix), il enregistre dans le ini color=couleur et le programme plante.

Par exemple tu peux mettre dans ta boucle :

Code : Tout sélectionner

...
$couleur = GUICtrlRead($couleur) ;On lit la couleur choisie dans la liste des couleurs
[b]if $couleur = "Couleur" then $couleur = "Noir" ; si pas de choix de couleur le noir est remis par défaut[/b]
$titre = GUICtrlRead($titre) ;On lit le titre
IniWrite("horloge_settings.ini","preferences","color",$couleur) ;On écrit la couleur dans le fichier .ini
...
Et la, plus de problème...

@Iste et Jerome : problème corrigé ci-dessus...

Par contre, si on choisit plusieurs fois de suite une couleur, l'ancienne horloge est toujours là. Le GuiDelete semble ne pas faire son travail.

Re: [EX] Petite Horloge

Posté : mar. 09 nov. 2010 21:05
par sablier94
Hello et merci.
J'ai fais des tests avec un simple GUICtrlSetData(), et le résultat est le meme chez moi. Pourriez vous m'expliquer ce choix ? Le comportement est meilleur chez vous ?
Chez moi, il y avait au bout de quelques minutes, des clignotements et des affichages de secondes presque aléatoire avec GUICtrlSetData().
A part ca, chez moi je changement de couleur fait tout planter
Ha, je n'avais pas eu ce problème, et effectivement, je pense que la solution de ricky va convenir :wink:
Par contre, si on choisit plusieurs fois de suite une couleur, l'ancienne horloge est toujours là. Le GuiDelete semble ne pas faire son travail.
Oui, je n'ai pas compris pourquoi elle ne disparaissait pas...

Merci

Re: [EX] Petite Horloge

Posté : mar. 09 nov. 2010 23:13
par timmalos
Par contre, comme il a été précisé plus haut, tu peux , et devrais, ne faire le GuiCtrlSetData (ou l'autre solution) QUE si le texte change, ce qui résolurait (Ce mot est français?) tous tes problèmes de scintillement, en effet pas besoin de changer l'heure toutes les 5 millisecondes tu vois.

Re: [EX] Petite Horloge

Posté : mar. 09 nov. 2010 23:26
par Tlem
Je pense, qu'il faudrait résoudre cette énigme rapidement. :roll: :lol:

Re: [EX] Petite Horloge

Posté : mar. 09 nov. 2010 23:29
par cutprod
Salut, je trouve ton script très bien et grâce à tes commentaires sur chaque lignes (li moi bien bloodwolff :mrgreen:) les débutants vont pouvoir comprendre et progresser :D
Félicitations

Re: [EX] Petite Horloge

Posté : mer. 10 nov. 2010 03:35
par bloodwolff
:o Tu peux toujours ne pas l'utiliser mon script qui lis tes fichiers Xml si il n'est pas assez commenté :!: :!: :!:
ce qui résolurait (Ce mot est français?)
Je dirais "résoudrais" mais je ne suis pas un expert :lol:

Re: [EX] Petite Horloge

Posté : mer. 10 nov. 2010 03:40
par bloodwolff
Pour les problèmes de scripts
1-scintillement , même si le script ne scintillais pas chez moi les lignes bleue devraient le résoudre

2- Pour les fenêtre qui s'ouvre plusieurs fois , tu oubliais simplement de fermer le script donc le script en lancais un nouveau mais tournais toujours

3- pour le problème de valeur par défault , j'ai modifié la combo pour la rendre "non modifiable" et j'ai modifier les données pour qu'il supprime le "couleur" déjà présent
ps: N'oublis pas d'ajouter le nouvel include
► Afficher le texte

Re: [EX] Petite Horloge

Posté : mer. 10 nov. 2010 07:28
par cutprod
:o Tu peux toujours ne pas l'utiliser mon script qui lis tes fichiers Xml si il n'est pas assez commenté :!: :!: :!:
Si bloodwolff je l'utilise et je te remercie encore pour ce bon boulot!!
Mais je trouve dommage que tu penses et surtout que tu le dise, que tu as "la flemme de commenter tes scripts".
Quand c'est pour toi, d'accord! Mais quand ils ont un but éducatif (sur le forum), c'est dommage!! Tu es un garçon très douer qui parle couramment le langage "Autoit" mais ce n'est pas le cas pour les débutants qui demande de l'aide.
Et si tu leur donne un script dont ils ne comprenne pas toutes les commandes il vont l'utiliser mais pas progresser!
Voila c'est ce que je pense, mais peut être que je suis dans le "faux"!
En tout cas le forum a besoin de membre "actifs" avec leurs bon et "mauvais" cotés. :P

Re: [EX] Petite Horloge

Posté : mar. 16 nov. 2010 15:58
par ivigu
► Afficher le texte
pardon de relever mais bon... on dit "résolverait"

voila, bon je m'en vais tester ton script si je n'ai rien de prévu ce soir ^^

Re: [EX] Petite Horloge

Posté : mar. 16 nov. 2010 16:33
par timmalos
Merci d'avoir relevé mais malheureusement personne n'a eu la bonne réponse (Mis à part Tlem) , car je voulais bien utiliser le Verbe résoudre et son conditionnel 'Résoudrait' et non le verbe 'Résolver' qui désolé ivigu n'existe pas encore dans la langue française. http://fr.wiktionary.org/wiki/r%C3%A9solver

J'éviterai dorénavant d'être fatigué quand j'écris un message sur ce forum si cela doit provoquer des trolls :lol:

Re: [EX] Petite Horloge

Posté : mar. 16 nov. 2010 18:57
par ivigu
moui moui j'ai vu ca bref.
dans mon desir d'amelioration dans autoit grace aux codes des autres, j'ai remarqué que le changement de couleur engendrait la creation d'une nouvelle horloge...

bref je m'en vais voir si j'arrive a modifier le code...

@+