[EX] Petite Horloge

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
sablier94
Niveau 4
Niveau 4
Messages : 87
Enregistré le : lun. 20 sept. 2010 10:18
Localisation : Suisse
Status : Hors ligne

[EX] Petite Horloge

#1

Message 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
 
Modifié en dernier par sablier94 le dim. 26 déc. 2010 16:38, modifié 1 fois.
Habibsbib
Niveau 7
Niveau 7
Messages : 393
Enregistré le : dim. 30 août 2009 13:49
Localisation : Euh...Verticale, entre le siège et l'écran...
Status : Hors ligne

Re: [EX] Petite Horloge

#2

Message par Habibsbib »

C'est quand même très simple comme script...
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [EX] Petite Horloge

#3

Message 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.
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [EX] Petite Horloge

#4

Message 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
Avatar du membre
sablier94
Niveau 4
Niveau 4
Messages : 87
Enregistré le : lun. 20 sept. 2010 10:18
Localisation : Suisse
Status : Hors ligne

Re: [EX] Petite Horloge

#5

Message 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
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [EX] Petite Horloge

#6

Message 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:
Compte skype : bloodwolfff
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [EX] Petite Horloge

#7

Message 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
Signez ici
Avatar du membre
Jerome
Niveau 9
Niveau 9
Messages : 661
Enregistré le : mar. 07 avr. 2009 08:35
Localisation : Picardie
Status : Hors ligne

Re: [EX] Petite Horloge

#8

Message par Jerome »

Iste a écrit :A part ca, chez moi je changement de couleur fait tout planter
Idem.
Avatar du membre
ricky
Niveau 7
Niveau 7
Messages : 443
Enregistré le : ven. 06 févr. 2009 09:25
Localisation : Suisse
Status : Hors ligne

Re: [EX] Petite Horloge

#9

Message 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.
Avatar du membre
sablier94
Niveau 4
Niveau 4
Messages : 87
Enregistré le : lun. 20 sept. 2010 10:18
Localisation : Suisse
Status : Hors ligne

Re: [EX] Petite Horloge

#10

Message 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
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [EX] Petite Horloge

#11

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

Re: [EX] Petite Horloge

#12

Message par Tlem »

Je pense, qu'il faudrait résoudre cette énigme rapidement. :roll: :lol:
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
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [EX] Petite Horloge

#13

Message 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
Cut, srcipteur du dimanche...désolé !-)
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [EX] Petite Horloge

#14

Message 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:
Compte skype : bloodwolfff
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

Re: [EX] Petite Horloge

#15

Message 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
Compte skype : bloodwolfff
Avatar du membre
cutprod
Niveau 6
Niveau 6
Messages : 273
Enregistré le : jeu. 30 sept. 2010 17:25
Localisation : Sud Ouest
Status : Hors ligne

Re: [EX] Petite Horloge

#16

Message 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
Cut, srcipteur du dimanche...désolé !-)
ivigu
Niveau 2
Niveau 2
Messages : 16
Enregistré le : jeu. 04 nov. 2010 00:52
Status : Hors ligne

Re: [EX] Petite Horloge

#17

Message 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 ^^
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [EX] Petite Horloge

#18

Message 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:
ivigu
Niveau 2
Niveau 2
Messages : 16
Enregistré le : jeu. 04 nov. 2010 00:52
Status : Hors ligne

Re: [EX] Petite Horloge

#19

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

@+
Répondre