Avec un petit Timer pour éviter le clignotement des gadgets.
Code : Tout sélectionner
;***********************************************
;Titre :*calcul_temps_restant
;Auteur : Dobro
;Date :15/06/2014
;Heure :11:04:45
;Version Purebasic : PureBasic 5.22 LTS (Windows - x86)
;Version de l'editeur :EPB V2.54
; Libairies necessaire : Aucune
;***********************************************
;{- Enumerations / DataSections
;{ Windows
Enumeration
#Win
EndEnumeration
Enumeration
#T ; Le timer
EndEnumeration
;}
;{ Gadgets
Enumeration
#Text_Titre
#Text_heure_actuel
#Text_Heure_Now
#Text_rendez_vous
#String_Rendez_vous
#Text_Attente
#Text_Resultat
EndEnumeration
;}
;{ Fonts
Enumeration
#Font_Text_Titre
#Font_Text_Heure_Now
#Font_Text_Resultat
EndEnumeration
;}
Define.l Event
Declare OpenWindow_Win()
Declare.s Calcul(a$,b$)
;}
If OpenWindow(#Win, 450, 200, 363, 199, "Rendez vous", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
TextGadget(#Text_Titre, 100, 10, 135, 45, "Rendez vous")
TextGadget(#Text_heure_actuel, 20, 75, 45, 25, "il est :")
TextGadget(#Text_Heure_Now, 60, 75, 105, 25, "")
TextGadget(#Text_rendez_vous, 15, 115, 90, 25, "Rendez vous")
StringGadget(#String_Rendez_vous, 115, 115, 45, 25, "13:20")
TextGadget(#Text_Attente, 10, 150, 55, 25, "Attente")
TextGadget(#Text_Resultat, 80, 145, 250, 30, "")
; Gadget Fonts
SetGadgetFont(#Text_Titre, LoadFont(#Font_Text_Titre, "Microsoft Sans Serif", 12, #PB_Font_Bold|#PB_Font_HighQuality))
SetGadgetFont(#Text_Heure_Now, LoadFont(#Font_Text_Heure_Now, "Microsoft Sans Serif", 10, #PB_Font_Bold|#PB_Font_HighQuality))
SetGadgetFont(#Text_Resultat, LoadFont(#Font_Text_Resultat, "Microsoft Sans Serif", 12, #PB_Font_Bold|#PB_Font_HighQuality))
AddWindowTimer(#Win, #T, 1000) ; Timer toutes les secondes
EndIf
;{- Event loop
Repeat
rendez_vous$=GetGadgetText(#String_Rendez_vous)
Event = WaitWindowEvent(12)
Select Event
; ///////////////////
; /////// Ajout Ar-S ///////
Case #PB_Event_Timer
Select EventTimer()
Case #T
Time$ = FormatDate("%hh:%ii:%ss", Date())
SetGadgetText(#Text_Heure_Now,Time$)
result$=Calcul(rendez_vous$,Time$)
SetGadgetText(#Text_Resultat,result$)
EndSelect
; ////////// Fin Timer /////////////////////
; ////////////////////////
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Win
CloseWindow(#Win)
Break
EndSelect
EndSelect
ForEver
Procedure.s Calcul(a$,b$)
; by Dobro
R_heure=Val(StringField(a$,1,":"))
R_Minut =Val(StringField(a$,2,":"))
AC_heure=Val(StringField(b$,1,":"))
AC_Minut =Val(StringField(b$,2,":"))
heure_restante=R_heure-AC_heure
minute_restante=R_Minut-AC_Minut
If minute_restante<0
heure_restante=heure_restante-1
minute_restante=minute_restante+60
EndIf
result$=Str(heure_restante)+" heure et "+StrF(minute_restante)+" minute(s)"
ProcedureReturn result$
EndProcedure
;
;}
; Epb