Page 1 sur 1

[resolu]Ajout heure minutes ?

Publié : dim. 17/août/2008 15:27
par Ar-S
Le petit code classique que je n'arrive pas à faire...

Code : Tout sélectionner

;{- Enumerations / DataSections
;{ Windows
Enumeration
  #WIN
  #Heure
  #MIN
  #plus
  #String_4
  #Text_5
  #Text_6
  #CONV
  #FIN
EndEnumeration
;}
;}
Procedure OpenWindow_WIN()
  If OpenWindow(#WIN, 571, 88, 254, 162, "Ajouteur d'heures", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#WIN))
      StringGadget(#Heure, 10, 25, 105, 25, "", #PB_String_Numeric)
      StringGadget(#MIN, 135, 25, 105, 25, "", #PB_String_Numeric)
      ButtonGadget(#plus, 10, 60, 230, 30, "+")
      StringGadget(#String_4, 10, 100, 230, 25, "", #PB_String_ReadOnly|#ES_CENTER)
      TextGadget(#Text_5, 40, 5, 40, 15, "Heures", #PB_Text_Center)
      TextGadget(#Text_6, 170, 5, 46, 15, "Minutes", #PB_Text_Center)
      ButtonGadget(#CONV, 10, 130, 100, 30, "Conversion")
      StringGadget(#FIN, 130, 130, 100, 30, "", #PB_String_ReadOnly|#ES_CENTER)
    EndIf
  EndIf
EndProcedure
heure=0
min=0
OpenWindow_WIN()

;{- Event loop
Repeat
  Select WaitWindowEvent()
      ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Heure
        Case #MIN
          
        Case #plus
          donnee$=GetGadgetText(#Heure)
          DonneeMin$=GetGadgetText(#MIN)
          
          heure=Val(donnee$)+heure
          heuremin=heure*60
          min=Val(DonneeMin$)+min
          mintotal=heuremin+min
          SetGadgetText(#String_4,StrD(mintotal))
          SetGadgetText(#Heure,"") : SetGadgetText(#MIN,"")
          
        Case #String_4
        Case #CONV
          REZ=mintotal/60
          SetGadgetText(#FIN,StrD(REZ,2))
        Case #Text_5
        Case #Text_6
      EndSelect
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #WIN
          CloseWindow(#WIN)
          Break
      EndSelect
  EndSelect
ForEver
;
;}
D'un coté j'inscris une heure, de l'autre les minutes
lorsque je fais "+", ça se converti en minutes et les champs s'effacent, j'inscrit d'autres heures et minutes et je refais "+", le totale en min s'affiche.
Enfin je fais Conertir.. et là la conversion chie.
Qu'ai-je loupé ?

Publié : dim. 17/août/2008 16:04
par Ollivier
Quel type de conversion ?

Publié : dim. 17/août/2008 16:38
par comtois
je n'ai pas tout compris , mais à tout hasard , essaye avec avec ça

Code : Tout sélectionner

SetGadgetText(#FIN,Str(REZ)+"h"+Str(mintotal%60))

Publié : dim. 17/août/2008 16:55
par kernadec
bonjour
ou ca

Code : Tout sélectionner

REZ.d=ValD(Str(mintotal/60)+"."+Str((mintotal-(Int(mintotal/60)*60))))

Publié : dim. 17/août/2008 17:01
par Ollivier
Moi je n'ai rien compris. Je crois que j'ai fait un scotchage PC trop long ce week-end. Un mal de crâne pas possible...

Publié : dim. 17/août/2008 17:19
par Anonyme
déclare ton REZ en float ou double.

ensuite , pour 2h 20 min , soit 140 min , tu veut affiché quoi ? 2,2 ? ou 2,33 ?

Publié : dim. 17/août/2008 19:02
par Ar-S
Cpl.Bator a écrit :déclare ton REZ en float ou double.

ensuite , pour 2h 20 min , soit 140 min , tu veut affiché quoi ? 2,2 ? ou 2,33 ?
2.20

Publié : dim. 17/août/2008 19:17
par Anonyme
il fat que tu utilises des strings a la places des floats , y a une perte de précision quoi que tu fasses...

un string pour les heures, un pour les minutes , tu controles les minutes , si =>60 alors d'increment heure de 1 , et tu enlèves 60 dans les minutes restantes, si moins de 60 minute restante, alors tu construit le string final, heure.minute
etc...

Publié : dim. 17/août/2008 20:35
par Ar-S
désolé j'ai du m'absenter, me voila de retour, je vais étudier cela et vous tiens au courant. merci

P.S :
SetGadgetText(#FIN,Str(REZ)+"h"+Str(mintotal%60))
a l'air de fonctionner correctement.

Publié : dim. 17/août/2008 21:09
par Ar-S
Bon voilà la version finale.
Pour l'utilité que je vais en avoir c'est bien suffisant :)
merci encore

Code : Tout sélectionner

; By Ar-S / 2008 LDV MULTIMEDIA with Pure Basic 4.20
; Merci à Comtois, Cpl.Bator, kernadec et Ollivier
Enumeration
  #WIN
  #Heure
  #MIN
  #plus
  #String_4
  #Text_5
  #Text_6
  #CONV
  #FIN
  #reset
  #end
  #Text_0
  #Text_end2
EndEnumeration

Procedure OpenWindow_WIN()
  If OpenWindow(#WIN, #PB_Ignore, #PB_Ignore, 254, 162, "Ajouteur d'heures", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
    If CreateGadgetList(WindowID(#WIN))
      StringGadget(#Heure, 10, 25, 105, 25, "", #PB_String_Numeric)
      StringGadget(#MIN, 135, 25, 105, 25, "", #PB_String_Numeric)
      ButtonGadget(#plus, 10, 60, 200, 30, "+")
      ButtonGadget(#reset, 210, 60, 30, 30, "C")
      StringGadget(#String_4, 10, 100, 230, 25, "", #PB_String_ReadOnly|#ES_CENTER)
      TextGadget(#Text_5, 40, 5, 40, 15, "Heures", #PB_Text_Center)
      TextGadget(#Text_6, 170, 5, 46, 15, "Minutes", #PB_Text_Center)
      TextGadget(#CONV, 10, 135, 100, 30, "Total des heures : ")
      StringGadget(#FIN, 120, 130, 120, 25, "", #PB_String_ReadOnly|#ES_CENTER)
    EndIf
  EndIf
EndProcedure

Procedure OpenWindow_end()
  If OpenWindow(#end, #PB_Ignore, #PB_Ignore, 391, 62, "Bye", #PB_Window_BorderLess|#PB_Window_ScreenCentered)
    StickyWindow(#end,1)
    If CreateGadgetList(WindowID(#end))
      TextGadget(#Text_0, 5, 5, 380, 25, "Logiciel créé par LDV MULTIMEDIA - http://ldvmultimedia.free.fr", #PB_Text_Center)
      TextGadget(#Text_end2, 5, 30, 380, 25, "Ce logiciel est gratuit", #PB_Text_Center)
    EndIf
    Delay(3000)
    End
  EndIf
EndProcedure
heure=0
min=0
OpenWindow_WIN()

;{- Event loop
Repeat
  Select WaitWindowEvent()
      ; ///////////////////
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #Heure
        Case #MIN
        Case #reset
          heure=0
          min=0
          donnee$=""
          heuremin=0
          mintotal=0
          REZ.d=0
          SetGadgetText(#MIN,"")
          SetGadgetText(#Heure,"")
          SetGadgetText(#FIN,"")
          SetGadgetText(#String_4,"")
          
        Case #plus
          donnee$=GetGadgetText(#Heure)
          DonneeMin$=GetGadgetText(#MIN)
          heure=Val(donnee$)+heure
          heuremin=heure*60
          min=Val(DonneeMin$)+min
          mintotal=heuremin+min
          SetGadgetText(#String_4,Str(mintotal)+" Minutes")
          SetGadgetText(#Heure,"") : SetGadgetText(#MIN,"")
          REZ.d=mintotal/60
          SetGadgetText(#FIN,Str(REZ)+"h "+Str(mintotal%60)+" min")
        Case #String_4
        Case #CONV
        Case #Text_5
        Case #Text_6
      EndSelect
      ; ////////////////////////
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #WIN
          CloseWindow(#WIN)
          OpenWindow_end()
          Break
      EndSelect
  EndSelect
ForEver
;
;}