Page 1 sur 2

Comment afficher tous les StringGadget

Publié : jeu. 02/nov./2017 14:37
par Micoute
Bonjour à tous,

J'essaie en vain, à faire s'afficher tous mes StringGadget pour afficher les résultats des tous les états de mes SpinGadjet.

Si je commente TOUS les GetGadgetState, sauf 1, le résultat s'affiche normalement, mais seulement dans ce cas, je pense que les résultats devraient s'afficher dans des procédures, mais je ne sais pas quels déclencheurs je peux mettre.

Alors, je viens une fois de plus pour solliciter votre aide bienveillante pour m'aider à résoudre mon problème et je vous en remercie grandement par avance.

Code : Tout sélectionner

;Convertisseur de temps

Enumeration
  #Fenetre_principale
EndEnumeration

Enumeration
  #Ctn_0
  #Ctn_1
  #Txt_Annee_0
  #Txt_Mois_0
  #Txt_Semaine_0
  #Txt_Jour_0
  #Txt_Heure_0
  #Txt_Minute_0
  #Txt_Seconde_0
  #Spn_Annee_0
  #Spn_Mois_0
  #Spn_Semaine_0
  #Spn_Jour_0
  #Spn_Heure_0
  #Spn_Minute_0
  #Spn_Seconde_0
  #Txt_Annee_1
  #Txt_Mois_1
  #Txt_Semaine_1
  #Txt_Jour_1
  #Txt_Heure_1
  #Txt_Minute_1
  #Txt_Seconde_1
  #Str_Annee_1
  #Str_Mois_1
  #Str_Semaine_1
  #Str_Jour_1
  #Str_Heure_1
  #Str_Minute_1
  #Str_Seconde_1
EndEnumeration

Enumeration
  #Police
EndEnumeration

;Structure
Structure sTemps
  Annee.f
  Mois.f
  Semaine.f
  Jour.f
  Heure.f
  Minute.f
  Seconde.f
EndStructure

Global.sTemps Temps
Global Evenement

Declare Programme_principal()

LoadFont(#Police, "Arial", 12, #PB_Font_Bold)

SetGadgetFont(#PB_Default, FontID(#Police))

Temps\Annee = 1
Temps\Mois = 12
Temps\Semaine = 52.17857142857
Temps\Jour = 365.25
Temps\Heure = 8766
Temps\Minute = 525960
Temps\Seconde = 31557600

Procedure Programme_principal()
  If OpenWindow(#Fenetre_principale, 0, 0, 570, 515, "Convertisseur de temps", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    ContainerGadget(#Ctn_0, 0, 10, 570, 250, #PB_Container_Raised)
    TextGadget(#Txt_Annee_0, 0, 0, 80, 30, "Année(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Mois_0, 180, 0, 80, 30, "Mois", #SS_CENTERIMAGE)
    TextGadget(#Txt_Semaine_0, 360, 0, 90, 30, "Semaine(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Jour_0, 0, 120, 80, 30, "Jour(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Heure_0, 180, 120, 80, 30, "Heure(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Minute_0, 360, 120, 90, 30, "Minute(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Seconde_0, 0, 210, 90, 30, "Seconde(s)", #SS_CENTERIMAGE)
    SpinGadget(#Spn_Annee_0, 80, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Mois_0, 260, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Semaine_0, 460, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Jour_0, 80, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Heure_0, 260, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Minute_0, 460, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Seconde_0, 90, 210, 95, 30, 0, 9999, #PB_Spin_Numeric)
    For i = #Spn_Annee_0 To #Spn_Seconde_0
      SetGadgetText(i, "0")
    Next i  
    CloseGadgetList()
    ContainerGadget(#Ctn_1, 0, 265, 570, 250, #PB_Container_Raised)
    TextGadget(#Txt_Annee_1, 0, 0, 80, 30, "Année(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Mois_1, 180, 0, 80, 30, "Mois", #SS_CENTERIMAGE)
    TextGadget(#Txt_Semaine_1, 360, 0, 90, 30, "Semaine(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Jour_1, 0, 120, 80, 30, "Jour(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Heure_1, 180, 120, 80, 30, "Heure(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Minute_1, 360, 120, 90, 30, "Minute(s)", #SS_CENTERIMAGE)
    TextGadget(#Txt_Seconde_1, 0, 210, 90, 30, "Seconde(s)", #SS_CENTERIMAGE)
    StringGadget(#Str_Annee_1, 80, 0, 95, 30, "")
    StringGadget(#Str_Mois_1, 260, 0, 95, 30, "")
    StringGadget(#Str_Semaine_1, 460, 0, 95, 30, "")
    StringGadget(#Str_Jour_1, 80, 120, 95, 30, "")
    StringGadget(#Str_Heure_1, 260, 120, 95, 30, "")
    StringGadget(#Str_Minute_1, 460, 120, 95, 30, "")
    StringGadget(#Str_Seconde_1, 90, 210, 460, 30, "")
    CloseGadgetList()
    
  EndIf
EndProcedure

Programme_principal()

;- Boucle
Repeat
  With Temps
    SetGadgetText(#Str_Annee_1, StrF(GetGadgetState(#Spn_Annee_0) * \Annee +
                                     GetGadgetState(#Spn_Mois_0) * \Annee / \Mois +
                                     GetGadgetState(#Spn_Semaine_0) * \Annee / \Semaine +
                                     GetGadgetState(#Spn_Jour_0) * \Annee / \Jour +
                                     GetGadgetState(#Spn_Heure_0) * \Annee / \Heure +
                                     GetGadgetState(#Spn_Minute_0) * \Annee / \Minute +
                                     GetGadgetState(#Spn_Seconde_0) * \Annee / \Seconde, 3))
    
    SetGadgetText(#Str_Mois_1, StrF(GetGadgetState(#Spn_Annee_0) * \Mois * \Annee +
                                    GetGadgetState(#Spn_Mois_0) * \Mois / \Mois +
                                    GetGadgetState(#Spn_Semaine_0) * \Mois / \Semaine +
                                    GetGadgetState(#Spn_Jour_0) * \Mois / \Jour +
                                    GetGadgetState(#Spn_Heure_0) * \Mois / \Heure +
                                    GetGadgetState(#Spn_Minute_0) * \Mois / \Minute +
                                    GetGadgetState(#Spn_Seconde_0) * \Mois / \Seconde, 0))
    
    SetGadgetText(#Str_Semaine_1, StrF(GetGadgetState(#Spn_Annee_0) * \Semaine * \Annee +
                                       GetGadgetState(#Spn_Mois_0) * \Semaine / \Mois +
                                       GetGadgetState(#Spn_Semaine_0) * \Semaine / \Semaine +
                                       GetGadgetState(#Spn_Jour_0) * \Semaine / \Jour +
                                       GetGadgetState(#Spn_Heure_0) * \Semaine / \Heure +
                                       GetGadgetState(#Spn_Minute_0) * \Semaine / \Minute +
                                       GetGadgetState(#Spn_Seconde_0) * \Semaine / \Seconde, 2))
    
    SetGadgetText(#Str_Jour_1, StrF(GetGadgetState(#Spn_Annee_0) * \Jour * \Annee +
                                    GetGadgetState(#Spn_Mois_0) * \Jour / \Mois +
                                    GetGadgetState(#Spn_Semaine_0) * \Jour / \Semaine +
                                    GetGadgetState(#Spn_Jour_0) * \Jour / \Jour +
                                    GetGadgetState(#Spn_Heure_0) * \Jour / \Heure +
                                    GetGadgetState(#Spn_Minute_0) * \Jour / \Minute +
                                    GetGadgetState(#Spn_Seconde_0) * \Jour / \Seconde, 2))
    
    SetGadgetText(#Str_Heure_1, StrF(GetGadgetState(#Spn_Annee_0) * \Heure +
                                     GetGadgetState(#Spn_Mois_0) * \Heure / \Mois +
                                     GetGadgetState(#Spn_Semaine_0) * \Heure / \Semaine +
                                     GetGadgetState(#Spn_Jour_0) * \Heure / \Jour +
                                     GetGadgetState(#Spn_Heure_0) * \Heure / \Heure +
                                     GetGadgetState(#Spn_Minute_0) * \Heure / \Minute +
                                     GetGadgetState(#Spn_Seconde_0) * \Heure / \Seconde, 0))
    
    SetGadgetText(#Str_Minute_1, StrF(GetGadgetState(#Spn_Annee_0) * \Minute +
                                      GetGadgetState(#Spn_Mois_0) * \Minute / \Mois +
                                      GetGadgetState(#Spn_Semaine_0) * \Minute / \Semaine +
                                      GetGadgetState(#Spn_Jour_0) * \Minute / \Jour +
                                      GetGadgetState(#Spn_Heure_0) * \Minute / \Heure +
                                      GetGadgetState(#Spn_Minute_0) * \Minute / \Minute +
                                      GetGadgetState(#Spn_Seconde_0) * \Minute / \Seconde, 0))
    
    SetGadgetText(#Str_Seconde_1, StrF(GetGadgetState(#Spn_Annee_0) * \Seconde +
                                       GetGadgetState(#Spn_Mois_0) * \Seconde / \Mois +
                                       GetGadgetState(#Spn_Semaine_0) * \Seconde / \Semaine +
                                       GetGadgetState(#Spn_Jour_0) * \Seconde / \Jour +
                                       GetGadgetState(#Spn_Heure_0) * \Seconde / \Heure +
                                       GetGadgetState(#Spn_Minute_0) * \Seconde / \Minute +
                                       GetGadgetState(#Spn_Seconde_0 ) * \Seconde / \Seconde, 0))
  EndWith
  Evenement = WaitWindowEvent()
  Select Evenement
      
    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
      
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Fenetre_principale
          CloseWindow(#Fenetre_principale)
          Break
      EndSelect
  EndSelect
ForEver


Re: Comment afficher tous les StringGadget

Publié : jeu. 02/nov./2017 15:35
par Zorro
il faut gerer tes gadgets comme il faut
ne pas faire une procedure appelée a chaque boucle

Purebasic gere les event comme il faut, il faut lui faire confiance

par contre j'ai viré ton "with /endwith"
qui n'apporte rien d'autre que de la complication inutile

Code : Tout sélectionner


;Convertisseur de temps

Enumeration
		#Fenetre_principale
EndEnumeration

Enumeration
		#Ctn_0
		#Ctn_1
		#Txt_Annee_0
		#Txt_Mois_0
		#Txt_Semaine_0
		#Txt_Jour_0
		#Txt_Heure_0
		#Txt_Minute_0
		#Txt_Seconde_0
		#Spn_Annee_0
		#Spn_Mois_0
		#Spn_Semaine_0
		#Spn_Jour_0
		#Spn_Heure_0
		#Spn_Minute_0
		#Spn_Seconde_0
		#Txt_Annee_1
		#Txt_Mois_1
		#Txt_Semaine_1
		#Txt_Jour_1
		#Txt_Heure_1
		#Txt_Minute_1
		#Txt_Seconde_1
		#Str_Annee_1
		#Str_Mois_1
		#Str_Semaine_1
		#Str_Jour_1
		#Str_Heure_1
		#Str_Minute_1
		#Str_Seconde_1
EndEnumeration

Enumeration
		#Police
EndEnumeration

;Structure
Structure sTemps
		Annee.f
		Mois.f
		Semaine.f
		Jour.f
		Heure.f
		Minute.f
		Seconde.f
EndStructure

Global.sTemps Temps
Global Evenement

Declare Programme_principal()

LoadFont(#Police, "Arial", 12, #PB_Font_Bold)

SetGadgetFont(#PB_Default, FontID(#Police))

Temps\Annee = 1
Temps\Mois = 12
Temps\Semaine = 52.17857142857
Temps\Jour = 365.25
Temps\Heure = 8766
Temps\Minute = 525960
Temps\Seconde = 31557600



Programme_principal()

;- Boucle
Repeat
		
		Evenement = WaitWindowEvent()
		Select Evenement
				
				Case #PB_Event_Gadget
				Select EventGadget()
						Case #Spn_Annee_0
						SetGadgetText(#Str_Annee_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Annee +
						GetGadgetState(#Spn_Mois_0) * Temps\Annee / Temps\Mois +
						GetGadgetState(#Spn_Semaine_0) * Temps\Annee / Temps\Semaine +
						GetGadgetState(#Spn_Jour_0) * Temps\Annee / Temps\Jour +
						GetGadgetState(#Spn_Heure_0) * Temps\Annee / Temps\Heure +
						GetGadgetState(#Spn_Minute_0) * Temps\Annee / Temps\Minute +
						GetGadgetState ( #Spn_Seconde_0) * Temps\Annee / Temps\Seconde, 3))
						Case #spn_Mois_0
						SetGadgetText(#Str_Mois_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Mois * Temps\Annee +
						GetGadgetState(#Spn_Mois_0) * Temps\Mois / Temps\Mois +
						GetGadgetState(#Spn_Semaine_0) * Temps\Mois / Temps\Semaine +
						GetGadgetState(#Spn_Jour_0) * Temps\Mois / Temps\Jour +
						GetGadgetState(#Spn_Heure_0) * Temps\Mois / Temps\Heure +
						GetGadgetState(#Spn_Minute_0) * Temps\Mois / Temps\Minute +
						GetGadgetState(#Spn_Seconde_0) * Temps\Mois / Temps\Seconde, 0))
						Case  #spn_Semaine_0
						SetGadgetText(#Str_Semaine_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Semaine * Temps\Annee +
						GetGadgetState(#Spn_Mois_0) * Temps\Semaine / Temps\Mois +
						GetGadgetState(#Spn_Semaine_0) * Temps\Semaine / Temps\Semaine +
						GetGadgetState(#Spn_Jour_0) * Temps\Semaine / Temps\Jour +
						GetGadgetState(#Spn_Heure_0) * Temps\Semaine / Temps\Heure +
						GetGadgetState(#Spn_Minute_0) * Temps\Semaine / Temps\Minute +
						GetGadgetState(#Spn_Seconde_0) * Temps\Semaine / Temps\Seconde, 2))
						Case  #spn_Jour_0
						SetGadgetText(#Str_Jour_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Jour * Temps\Annee +
						GetGadgetState(#Spn_Mois_0) * Temps\Jour / Temps\Mois +
						GetGadgetState(#Spn_Semaine_0) * Temps\Jour / Temps\Semaine +
						GetGadgetState(#Spn_Jour_0) * Temps\Jour / Temps\Jour +
						GetGadgetState(#Spn_Heure_0) * Temps\Jour / Temps\Heure +
						GetGadgetState(#Spn_Minute_0) * Temps\Jour / Temps\Minute +
						GetGadgetState(#Spn_Seconde_0) * Temps\Jour / Temps\Seconde, 2))
						Case  #spn_Heure_0
						SetGadgetText(#Str_Heure_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Heure +
						GetGadgetState(#Spn_Mois_0) * Temps\Heure / Temps\Mois +
						GetGadgetState(#Spn_Semaine_0) * Temps\Heure / Temps\Semaine +
						GetGadgetState(#Spn_Jour_0) * Temps\Heure / Temps\Jour +
						GetGadgetState(#Spn_Heure_0) * Temps\Heure / Temps\Heure +
						GetGadgetState(#Spn_Minute_0) * Temps\Heure / Temps\Minute +
						GetGadgetState(#Spn_Seconde_0) * Temps\Heure / Temps\Seconde, 0))
						Case  #spn_Minute_0
						SetGadgetText(#Str_Minute_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Minute +
						GetGadgetState(#Spn_Mois_0) * Temps\Minute / Temps\Mois +
						GetGadgetState(#Spn_Semaine_0) * Temps\Minute / Temps\Semaine +
						GetGadgetState(#Spn_Jour_0) * Temps\Minute / Temps\Jour +
						GetGadgetState(#Spn_Heure_0) * Temps\Minute / Temps\Heure +
						GetGadgetState(#Spn_Minute_0) * Temps\Minute / Temps\Minute +
						GetGadgetState(#Spn_Seconde_0) * Temps\Minute / Temps\Seconde, 0))
						Case  #spn_Seconde_0
						SetGadgetText(#Str_Seconde_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Seconde +
						GetGadgetState(#Spn_Mois_0) * Temps\Seconde / Temps\Mois +
						GetGadgetState(#Spn_Semaine_0) * Temps\Seconde / Temps\Semaine +
						GetGadgetState(#Spn_Jour_0) * Temps\Seconde / Temps\Jour +
						GetGadgetState(#Spn_Heure_0) * Temps\Seconde / Temps\Heure +
						GetGadgetState(#Spn_Minute_0) * Temps\Seconde / Temps\Minute +
						GetGadgetState(#Spn_Seconde_0 ) * Temps\Seconde / Temps\Seconde, 0))
				EndSelect
				
				Case #PB_Event_CloseWindow
				Select EventWindow()
						Case #Fenetre_principale
						CloseWindow(#Fenetre_principale)
						Break
				EndSelect
		EndSelect
ForEver


Procedure Programme_principal()
		If OpenWindow(#Fenetre_principale, 0, 0, 570, 515, "Convertisseur de temps", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
				ContainerGadget(#Ctn_0, 0, 10, 570, 250, #PB_Container_Raised)
				TextGadget(#Txt_Annee_0, 0, 0, 80, 30, "Année(s)", #PB_Text_Center)
				TextGadget(#Txt_Mois_0, 180, 0, 80, 30, "Mois", #PB_Text_Center)
				TextGadget(#Txt_Semaine_0, 360, 0, 90, 30, "Semaine(s)", #PB_Text_Center)
				TextGadget(#Txt_Jour_0, 0, 120, 80, 30, "Jour(s)", #PB_Text_Center)
				TextGadget(#Txt_Heure_0, 180, 120, 80, 30, "Heure(s)", #PB_Text_Center)
				TextGadget(#Txt_Minute_0, 360, 120, 90, 30, "Minute(s)", #PB_Text_Center)
				TextGadget(#Txt_Seconde_0, 0, 210, 90, 30, "Seconde(s)", #PB_Text_Center)
				SpinGadget(#Spn_Annee_0, 80, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Mois_0, 260, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Semaine_0, 460, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Jour_0, 80, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Heure_0, 260, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Minute_0, 460, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Seconde_0, 90, 210, 95, 30, 0, 9999, #PB_Spin_Numeric)
				For i = #Spn_Annee_0 To #Spn_Seconde_0
						SetGadgetText(i, "0")
				Next i 
				CloseGadgetList()
				ContainerGadget(#Ctn_1, 0, 265, 570, 250, #PB_Container_Raised)
				TextGadget(#Txt_Annee_1, 0, 0, 80, 30, "Année(s)", #PB_Text_Center)
				TextGadget(#Txt_Mois_1, 180, 0, 80, 30, "Mois", #PB_Text_Center)
				TextGadget(#Txt_Semaine_1, 360, 0, 90, 30, "Semaine(s)", #PB_Text_Center)
				TextGadget(#Txt_Jour_1, 0, 120, 80, 30, "Jour(s)", #PB_Text_Center)
				TextGadget(#Txt_Heure_1, 180, 120, 80, 30, "Heure(s)", #PB_Text_Center)
				TextGadget(#Txt_Minute_1, 360, 120, 90, 30, "Minute(s)", #PB_Text_Center)
				TextGadget(#Txt_Seconde_1, 0, 210, 90, 30, "Seconde(s)", #PB_Text_Center)
				StringGadget(#Str_Annee_1, 80, 0, 95, 30, "")
				StringGadget(#Str_Mois_1, 260, 0, 95, 30, "")
				StringGadget(#Str_Semaine_1, 460, 0, 95, 30, "")
				StringGadget(#Str_Jour_1, 80, 120, 95, 30, "")
				StringGadget(#Str_Heure_1, 260, 120, 95, 30, "")
				StringGadget(#Str_Minute_1, 460, 120, 95, 30, "")
				StringGadget(#Str_Seconde_1, 90, 210, 460, 30, "")
				CloseGadgetList()
				
		EndIf
EndProcedure


Re: Comment afficher tous les StringGadget

Publié : jeu. 02/nov./2017 16:09
par Micoute
Merci Zorro pour ton aide, j'avais utilisé cette méthode au début, mais je voulais que les résultats soient en direct. Si n'y a pas d'autre solution, je vais m'en contenter, car ça donne les résultats escomptés.

Re: Comment afficher tous les StringGadget

Publié : jeu. 02/nov./2017 16:45
par Zorro
ben on est bien en temps reel
des que tu modifies la valeur d'un des spins , il est tout de suite calculé et posé dans le string correspondant ....
plus direct, il n'y a pas !

Re: Comment afficher tous les StringGadget

Publié : jeu. 02/nov./2017 19:03
par Micoute
C'est bien ce que je pense aussi, merci encore.

Re: Comment afficher tous les StringGadget

Publié : ven. 03/nov./2017 14:23
par Micoute
Ca y est, j'ai enfin trouvé la solution:

Code : Tout sélectionner

;Convertisseur de temps

Enumeration
  #Fenetre_principale
EndEnumeration

Enumeration
  #Ctn_0
  #Ctn_1
  #Txt_Annee_0
  #Txt_Mois_0
  #Txt_Semaine_0
  #Txt_Jour_0
  #Txt_Heure_0
  #Txt_Minute_0
  #Txt_Seconde_0
  #Spn_Annee_0
  #Spn_Mois_0
  #Spn_Semaine_0
  #Spn_Jour_0
  #Spn_Heure_0
  #Spn_Minute_0
  #Spn_Seconde_0
  #Txt_Annee_1
  #Txt_Mois_1
  #Txt_Semaine_1
  #Txt_Jour_1
  #Txt_Heure_1
  #Txt_Minute_1
  #Txt_Seconde_1
  #Str_Annee_1
  #Str_Mois_1
  #Str_Semaine_1
  #Str_Jour_1
  #Str_Heure_1
  #Str_Minute_1
  #Str_Seconde_1
  #Timer
EndEnumeration

Enumeration
  #Police
EndEnumeration

;Structure
Structure sTemps
  Annee.f
  Mois.f
  Semaine.f
  Jour.f
  Heure.f
  Minute.f
  Seconde.f
EndStructure

Global.sTemps Temps
Global Evenement
Global.f monAnnee, monMois, maSemaine, monJour, monHeure, maMinute, MaSeconde

Declare Programme_principal()
Declare _Annee_()
Declare _Mois_()
Declare _Semaine_()
Declare _Jour_()
Declare _Heure_()
Declare _Minute_()
Declare _Seconde_()

LoadFont(#Police, "Arial", 12, #PB_Font_Bold)

SetGadgetFont(#PB_Default, FontID(#Police))

Temps\Annee = 1
Temps\Mois = 12
Temps\Semaine = 52.17857142857
Temps\Jour = 365.25
Temps\Heure = 8766
Temps\Minute = 525960
Temps\Seconde = 31557600



Programme_principal()

;- Boucle
Repeat
  Evenement = WaitWindowEvent()
  Select Evenement
      
    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
      
    Case #PB_Event_Timer
   If EventTimer() = #Timer
    _Seconde_()
   EndIf   

      
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #Fenetre_principale
          CloseWindow(#Fenetre_principale)
          Break
      EndSelect
  EndSelect
ForEver


Procedure Programme_principal()
  If OpenWindow(#Fenetre_principale, 0, 0, 570, 515, "Convertisseur de temps", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
    ContainerGadget(#Ctn_0, 0, 10, 570, 250, #PB_Container_Raised)
    TextGadget(#Txt_Annee_0, 0, 0, 80, 30, "Année(s)", #PB_Text_Center)
    TextGadget(#Txt_Mois_0, 180, 0, 80, 30, "Mois", #PB_Text_Center)
    TextGadget(#Txt_Semaine_0, 360, 0, 90, 30, "Semaine(s)", #PB_Text_Center)
    TextGadget(#Txt_Jour_0, 0, 120, 80, 30, "Jour(s)", #PB_Text_Center)
    TextGadget(#Txt_Heure_0, 180, 120, 80, 30, "Heure(s)", #PB_Text_Center)
    TextGadget(#Txt_Minute_0, 360, 120, 90, 30, "Minute(s)", #PB_Text_Center)
    TextGadget(#Txt_Seconde_0, 0, 210, 90, 30, "Seconde(s)", #PB_Text_Center)
    SpinGadget(#Spn_Annee_0, 80, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Mois_0, 260, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Semaine_0, 460, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Jour_0, 80, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Heure_0, 260, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Minute_0, 460, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
    SpinGadget(#Spn_Seconde_0, 90, 210, 95, 30, 0, 9999, #PB_Spin_Numeric)
    For i = #Spn_Annee_0 To #Spn_Seconde_0
      SetGadgetText(i, "0")
    Next i 
    CloseGadgetList()
    ContainerGadget(#Ctn_1, 0, 265, 570, 250, #PB_Container_Raised)
    TextGadget(#Txt_Annee_1, 0, 0, 80, 30, "Année(s)", #PB_Text_Center)
    TextGadget(#Txt_Mois_1, 180, 0, 80, 30, "Mois", #PB_Text_Center)
    TextGadget(#Txt_Semaine_1, 360, 0, 90, 30, "Semaine(s)", #PB_Text_Center)
    TextGadget(#Txt_Jour_1, 0, 120, 80, 30, "Jour(s)", #PB_Text_Center)
    TextGadget(#Txt_Heure_1, 180, 120, 80, 30, "Heure(s)", #PB_Text_Center)
    TextGadget(#Txt_Minute_1, 360, 120, 90, 30, "Minute(s)", #PB_Text_Center)
    TextGadget(#Txt_Seconde_1, 0, 210, 90, 30, "Seconde(s)", #PB_Text_Center)
    StringGadget(#Str_Annee_1, 80, 0, 95, 30, "")
    StringGadget(#Str_Mois_1, 260, 0, 95, 30, "")
    StringGadget(#Str_Semaine_1, 460, 0, 95, 30, "")
    StringGadget(#Str_Jour_1, 80, 120, 95, 30, "")
    StringGadget(#Str_Heure_1, 260, 120, 95, 30, "")
    StringGadget(#Str_Minute_1, 460, 120, 95, 30, "")
    StringGadget(#Str_Seconde_1, 90, 210, 460, 30, "")
    CloseGadgetList()
    
    BindGadgetEvent(#Spn_Annee_0, @_Annee_())
    BindGadgetEvent(#Spn_Mois_0, @_Mois_())
    BindGadgetEvent(#Spn_Semaine_0, @_Semaine_())
    BindGadgetEvent(#Spn_Jour_0, @_Jour_())
    BindGadgetEvent(#Spn_Heure_0, @_Heure_())
    BindGadgetEvent(#Spn_Minute_0, @_Minute_())
    BindGadgetEvent(#Spn_Seconde_0, @_Seconde_())
    
    AddWindowTimer(#Fenetre_principale, #Timer, 100)
    
  EndIf
EndProcedure

Procedure _Annee_()
  SetGadgetText(#Str_Annee_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Annee +
                                   GetGadgetState(#Spn_Mois_0) * Temps\Annee / Temps\Mois +
                                   GetGadgetState(#Spn_Semaine_0) * Temps\Annee / Temps\Semaine +
                                   GetGadgetState(#Spn_Jour_0) * Temps\Annee / Temps\Jour +
                                   GetGadgetState(#Spn_Heure_0) * Temps\Annee / Temps\Heure +
                                   GetGadgetState(#Spn_Minute_0) * Temps\Annee / Temps\Minute +
                                   GetGadgetState ( #Spn_Seconde_0) * Temps\Annee / Temps\Seconde, 3))
EndProcedure

Procedure _Mois_()
  SetGadgetText(#Str_Mois_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Mois * Temps\Annee +
                                  GetGadgetState(#Spn_Mois_0) * Temps\Mois / Temps\Mois +
                                  GetGadgetState(#Spn_Semaine_0) * Temps\Mois / Temps\Semaine +
                                  GetGadgetState(#Spn_Jour_0) * Temps\Mois / Temps\Jour +
                                  GetGadgetState(#Spn_Heure_0) * Temps\Mois / Temps\Heure +
                                  GetGadgetState(#Spn_Minute_0) * Temps\Mois / Temps\Minute +
                                  GetGadgetState(#Spn_Seconde_0) * Temps\Mois / Temps\Seconde, 2))
  _Annee_()
EndProcedure

Procedure _Semaine_()
  SetGadgetText(#Str_Semaine_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Semaine * Temps\Annee +
                                     GetGadgetState(#Spn_Mois_0) * Temps\Semaine / Temps\Mois +
                                     GetGadgetState(#Spn_Semaine_0) * Temps\Semaine / Temps\Semaine +
                                     GetGadgetState(#Spn_Jour_0) * Temps\Semaine / Temps\Jour +
                                     GetGadgetState(#Spn_Heure_0) * Temps\Semaine / Temps\Heure +
                                     GetGadgetState(#Spn_Minute_0) * Temps\Semaine / Temps\Minute +
                                     GetGadgetState(#Spn_Seconde_0) * Temps\Semaine / Temps\Seconde, 2))
  _Mois_()
EndProcedure

Procedure _Jour_()
  SetGadgetText(#Str_Jour_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Jour * Temps\Annee +
                                  GetGadgetState(#Spn_Mois_0) * Temps\Jour / Temps\Mois +
                                  GetGadgetState(#Spn_Semaine_0) * Temps\Jour / Temps\Semaine +
                                  GetGadgetState(#Spn_Jour_0) * Temps\Jour / Temps\Jour +
                                  GetGadgetState(#Spn_Heure_0) * Temps\Jour / Temps\Heure +
                                  GetGadgetState(#Spn_Minute_0) * Temps\Jour / Temps\Minute +
                                  GetGadgetState(#Spn_Seconde_0) * Temps\Jour / Temps\Seconde, 2))
  _Semaine_()
EndProcedure

Procedure _Heure_()
  SetGadgetText(#Str_Heure_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Heure +
                                   GetGadgetState(#Spn_Mois_0) * Temps\Heure / Temps\Mois +
                                   GetGadgetState(#Spn_Semaine_0) * Temps\Heure / Temps\Semaine +
                                   GetGadgetState(#Spn_Jour_0) * Temps\Heure / Temps\Jour +
                                   GetGadgetState(#Spn_Heure_0) * Temps\Heure / Temps\Heure +
                                   GetGadgetState(#Spn_Minute_0) * Temps\Heure / Temps\Minute +
                                   GetGadgetState(#Spn_Seconde_0) * Temps\Heure / Temps\Seconde, 0))
  _Jour_()
EndProcedure

Procedure _Minute_()
  SetGadgetText(#Str_Minute_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Minute +
                                    GetGadgetState(#Spn_Mois_0) * Temps\Minute / Temps\Mois +
                                    GetGadgetState(#Spn_Semaine_0) * Temps\Minute / Temps\Semaine +
                                    GetGadgetState(#Spn_Jour_0) * Temps\Minute / Temps\Jour +
                                    GetGadgetState(#Spn_Heure_0) * Temps\Minute / Temps\Heure +
                                    GetGadgetState(#Spn_Minute_0) * Temps\Minute / Temps\Minute +
                                    GetGadgetState(#Spn_Seconde_0) * Temps\Minute / Temps\Seconde, 0))
  _Heure_()
EndProcedure

Procedure _Seconde_()
  SetGadgetText(#Str_Seconde_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Seconde +
                                     GetGadgetState(#Spn_Mois_0) * Temps\Seconde / Temps\Mois +
                                     GetGadgetState(#Spn_Semaine_0) * Temps\Seconde / Temps\Semaine +
                                     GetGadgetState(#Spn_Jour_0) * Temps\Seconde / Temps\Jour +
                                     GetGadgetState(#Spn_Heure_0) * Temps\Seconde / Temps\Heure +
                                     GetGadgetState(#Spn_Minute_0) * Temps\Seconde / Temps\Minute +
                                     GetGadgetState(#Spn_Seconde_0 ) * Temps\Seconde / Temps\Seconde, 0))
  _Minute_()
EndProcedure

Re: Comment afficher tous les StringGadget

Publié : ven. 03/nov./2017 16:22
par Zorro
bon, l'essentiel c'est que ça marche :)

voici la version sans callback()
et sans timer (d'ailleurs je sais pas a quoi il sert)

Code : Tout sélectionner

;Convertisseur de temps
Enumeration
		#Fenetre_principale
EndEnumeration
Enumeration
		#Ctn_0
		#Ctn_1
		#Txt_Annee_0
		#Txt_Mois_0
		#Txt_Semaine_0
		#Txt_Jour_0
		#Txt_Heure_0
		#Txt_Minute_0
		#Txt_Seconde_0
		#Spn_Annee_0
		#Spn_Mois_0
		#Spn_Semaine_0
		#Spn_Jour_0
		#Spn_Heure_0
		#Spn_Minute_0
		#Spn_Seconde_0
		#Txt_Annee_1
		#Txt_Mois_1
		#Txt_Semaine_1
		#Txt_Jour_1
		#Txt_Heure_1
		#Txt_Minute_1
		#Txt_Seconde_1
		#Str_Annee_1
		#Str_Mois_1
		#Str_Semaine_1
		#Str_Jour_1
		#Str_Heure_1
		#Str_Minute_1
		#Str_Seconde_1
EndEnumeration
Enumeration
		#Police
EndEnumeration
;Structure
Structure sTemps
		Annee.f
		Mois.f
		Semaine.f
		Jour.f
		Heure.f
		Minute.f
		Seconde.f
EndStructure
Global.sTemps Temps
Global Evenement
Declare programme_principal()
Declare calcul()
Declare _annee_()
Declare _mois_()
Declare _semaine_()
Declare _jour_()
Declare _heure_()
Declare _minute_()
Declare _seconde_()
Declare dessin_resultat()

LoadFont(#Police, "Arial", 12, #PB_Font_Bold)
SetGadgetFont(#PB_Default, FontID(#Police))
Temps\Annee = 1
Temps\Mois = 12
Temps\Semaine = 52.17857142857
Temps\Jour = 365.25
Temps\Heure = 8766
Temps\Minute = 525960
Temps\Seconde = 31557600
Programme_principal()
Global annee.s,mois.s,semaine.s,jour.s,Heure.s,minute.s,seconde.s
;- Boucle
Repeat
		Evenement = WaitWindowEvent()
		Select Evenement
				Case #PB_Event_Gadget
				Select EventGadget()
						Case #Spn_Annee_0
						Calcul()
						Case #spn_mois_0
						Calcul()
						Case #spn_semaine_0
						Calcul()
						Case #spn_jour_0
						Calcul()
						Case #spn_heure_0
						Calcul()
						Case #spn_minute_0
						Calcul()
						Case #spn_seconde_0
						Calcul()
				EndSelect
				Case #PB_Event_CloseWindow
				Select EventWindow()
						Case #Fenetre_principale
						CloseWindow(#Fenetre_principale)
						Break
				EndSelect
		EndSelect
ForEver
;
Procedure Programme_principal()
		If OpenWindow(#Fenetre_principale, 0, 0, 570, 515, "Convertisseur de temps", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
				ContainerGadget(#Ctn_0, 0, 10, 570, 250, #PB_Container_Raised)
				TextGadget(#Txt_Annee_0, 0, 0, 80, 30, "Année(s)", #PB_Text_Center)
				TextGadget(#Txt_Mois_0, 180, 0, 80, 30, "Mois", #PB_Text_Center)
				TextGadget(#Txt_Semaine_0, 360, 0, 90, 30, "Semaine(s)", #PB_Text_Center)
				TextGadget(#Txt_Jour_0, 0, 120, 80, 30, "Jour(s)", #PB_Text_Center)
				TextGadget(#Txt_Heure_0, 180, 120, 80, 30, "Heure(s)", #PB_Text_Center)
				TextGadget(#Txt_Minute_0, 360, 120, 90, 30, "Minute(s)", #PB_Text_Center)
				TextGadget(#Txt_Seconde_0, 0, 210, 90, 30, "Seconde(s)", #PB_Text_Center)
				SpinGadget(#Spn_Annee_0, 80, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Mois_0, 260, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Semaine_0, 460, 0, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Jour_0, 80, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Heure_0, 260, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Minute_0, 460, 120, 95, 30, 0, 9999, #PB_Spin_Numeric)
				SpinGadget(#Spn_Seconde_0, 90, 210, 95, 30, 0, 9999, #PB_Spin_Numeric)
				For i = #Spn_Annee_0 To #Spn_Seconde_0
						SetGadgetText(i, "0")
				Next i
				CloseGadgetList()
				ContainerGadget(#Ctn_1, 0, 265, 570, 250, #PB_Container_Raised)
				TextGadget(#Txt_Annee_1, 0, 0, 80, 30, "Année(s)", #PB_Text_Center)
				TextGadget(#Txt_Mois_1, 180, 0, 80, 30, "Mois", #PB_Text_Center)
				TextGadget(#Txt_Semaine_1, 360, 0, 90, 30, "Semaine(s)", #PB_Text_Center)
				TextGadget(#Txt_Jour_1, 0, 120, 80, 30, "Jour(s)", #PB_Text_Center)
				TextGadget(#Txt_Heure_1, 180, 120, 80, 30, "Heure(s)", #PB_Text_Center)
				TextGadget(#Txt_Minute_1, 360, 120, 90, 30, "Minute(s)", #PB_Text_Center)
				TextGadget(#Txt_Seconde_1, 0, 210, 90, 30, "Seconde(s)", #PB_Text_Center)
				StringGadget(#Str_Annee_1, 80, 0, 95, 30, "")
				StringGadget(#Str_Mois_1, 260, 0, 95, 30, "")
				StringGadget(#Str_Semaine_1, 460, 0, 95, 30, "")
				StringGadget(#Str_Jour_1, 80, 120, 95, 30, "")
				StringGadget(#Str_Heure_1, 260, 120, 95, 30, "")
				StringGadget(#Str_Minute_1, 460, 120, 95, 30, "")
				StringGadget(#Str_Seconde_1, 90, 210, 460, 30, "")
				CloseGadgetList()
		EndIf
EndProcedure
;
Procedure Calcul()
		_Annee_()
		_Mois_()
		_Semaine_()
		_Jour_()
		_Heure_()
		_Minute_()
		_Seconde_()
EndProcedure
Procedure _Annee_()
		SetGadgetText(#Str_Annee_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Annee +
		GetGadgetState(#Spn_Mois_0) * Temps\Annee / Temps\Mois +
		GetGadgetState(#Spn_Semaine_0) * Temps\Annee / Temps\Semaine +
		GetGadgetState(#Spn_Jour_0) * Temps\Annee / Temps\Jour +
		GetGadgetState(#Spn_Heure_0) * Temps\Annee / Temps\Heure +
		GetGadgetState(#Spn_Minute_0) * Temps\Annee / Temps\Minute +
		GetGadgetState ( #Spn_Seconde_0) * Temps\Annee / Temps\Seconde, 3))
EndProcedure
Procedure _Mois_()
		SetGadgetText(#Str_Mois_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Mois * Temps\Annee +
		GetGadgetState(#Spn_Mois_0) * Temps\Mois / Temps\Mois +
		GetGadgetState(#Spn_Semaine_0) * Temps\Mois / Temps\Semaine +
		GetGadgetState(#Spn_Jour_0) * Temps\Mois / Temps\Jour +
		GetGadgetState(#Spn_Heure_0) * Temps\Mois / Temps\Heure +
		GetGadgetState(#Spn_Minute_0) * Temps\Mois / Temps\Minute +
		GetGadgetState(#Spn_Seconde_0) * Temps\Mois / Temps\Seconde, 2))
		_Annee_()
EndProcedure
Procedure _Semaine_()
		SetGadgetText(#Str_Semaine_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Semaine * Temps\Annee +
		GetGadgetState(#Spn_Mois_0) * Temps\Semaine / Temps\Mois +
		GetGadgetState(#Spn_Semaine_0) * Temps\Semaine / Temps\Semaine +
		GetGadgetState(#Spn_Jour_0) * Temps\Semaine / Temps\Jour +
		GetGadgetState(#Spn_Heure_0) * Temps\Semaine / Temps\Heure +
		GetGadgetState(#Spn_Minute_0) * Temps\Semaine / Temps\Minute +
		GetGadgetState(#Spn_Seconde_0) * Temps\Semaine / Temps\Seconde, 2))
		_Mois_()
EndProcedure
Procedure _Jour_()
		SetGadgetText(#Str_Jour_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Jour * Temps\Annee +
		GetGadgetState(#Spn_Mois_0) * Temps\Jour / Temps\Mois +
		GetGadgetState(#Spn_Semaine_0) * Temps\Jour / Temps\Semaine +
		GetGadgetState(#Spn_Jour_0) * Temps\Jour / Temps\Jour +
		GetGadgetState(#Spn_Heure_0) * Temps\Jour / Temps\Heure +
		GetGadgetState(#Spn_Minute_0) * Temps\Jour / Temps\Minute +
		GetGadgetState(#Spn_Seconde_0) * Temps\Jour / Temps\Seconde, 2))
		_Semaine_()
EndProcedure
Procedure _Heure_()
		SetGadgetText(#Str_Heure_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Heure +
		GetGadgetState(#Spn_Mois_0) * Temps\Heure / Temps\Mois +
		GetGadgetState(#Spn_Semaine_0) * Temps\Heure / Temps\Semaine +
		GetGadgetState(#Spn_Jour_0) * Temps\Heure / Temps\Jour +
		GetGadgetState(#Spn_Heure_0) * Temps\Heure / Temps\Heure +
		GetGadgetState(#Spn_Minute_0) * Temps\Heure / Temps\Minute +
		GetGadgetState(#Spn_Seconde_0) * Temps\Heure / Temps\Seconde, 0))
		_Jour_()
EndProcedure
Procedure _Minute_()
		SetGadgetText(#Str_Minute_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Minute +
		GetGadgetState(#Spn_Mois_0) * Temps\Minute / Temps\Mois +
		GetGadgetState(#Spn_Semaine_0) * Temps\Minute / Temps\Semaine +
		GetGadgetState(#Spn_Jour_0) * Temps\Minute / Temps\Jour +
		GetGadgetState(#Spn_Heure_0) * Temps\Minute / Temps\Heure +
		GetGadgetState(#Spn_Minute_0) * Temps\Minute / Temps\Minute +
		GetGadgetState(#Spn_Seconde_0) * Temps\Minute / Temps\Seconde, 0))
		_Heure_()
EndProcedure
Procedure _Seconde_()
		SetGadgetText(#Str_Seconde_1, StrF(GetGadgetState(#Spn_Annee_0) * Temps\Seconde +
		GetGadgetState(#Spn_Mois_0) * Temps\Seconde / Temps\Mois +
		GetGadgetState(#Spn_Semaine_0) * Temps\Seconde / Temps\Semaine +
		GetGadgetState(#Spn_Jour_0) * Temps\Seconde / Temps\Jour +
		GetGadgetState(#Spn_Heure_0) * Temps\Seconde / Temps\Heure +
		GetGadgetState(#Spn_Minute_0) * Temps\Seconde / Temps\Minute +
		GetGadgetState(#Spn_Seconde_0 ) * Temps\Seconde / Temps\Seconde, 0))
		_Minute_()
EndProcedure
;

Re: Comment afficher tous les StringGadget

Publié : ven. 03/nov./2017 18:08
par Micoute
Ta solution est bien meilleure que la mienne, moi j'ai utilisé un Timer, pour appeler la procédure _Seconde_() qui permet de déclencher la cascade d'appels coercitifs des autres procédures.

Merci beaucoup pour cette belle démonstration.

Re: Comment afficher tous les StringGadget

Publié : ven. 03/nov./2017 18:46
par Ollivier
Après, on peut éluder un peu. (j'ai mis "TC" pour "Time Converter")

Pour TC_Text.S = "Annee(s);2;31557600" :
"Annee(s)" = nom de l'unité
"2" maximum du spin (en chiffres, donc ici 2 correspond à un max de 99)
"31557600" nombre de secondes contenues dans l'unité

Code : Tout sélectionner

;****************************************************************************************************************************************************************************************

#TC_Spin = 16
#TC_String = 48

SetGadgetFont(#PB_Default, FontID(LoadFont(#PB_Any, "Arial", 16) ) )

Global TC_Window = OpenWindow(#PB_Any, 100, 100, 800, 480, "TC", #PB_Window_SystemMenu)
Global TC_Text.S = "Annee(s);2;31557600;Mois;3;2629800;Semaine(s);3;604800;Jour(s);4;86400;Heure(s);5;3600;Minute(s);7;60;Seconde(s);9;1"
Global Dim TC_Gadget(63)
Define.I X0 = 16, Y0 = 40, Xc = 128, Y = Y0

For I = 0 To 6
        X = X0: TC_Gadget(I) = TextGadget(#PB_Any, X, Y, Xc, 30, StringField(TC_Text, I * 3 + 1, ";"), #PB_Text_Center)
        X + (Xc * 1): TC_Gadget(I + #TC_Spin) = SpinGadget(#PB_Any, X, Y, Xc * 2, 30, 0, Pow(10, Val(StringField(TC_Text, I * 3 + 2, ";") ) ) - 1, #PB_Spin_Numeric)
        X + (Xc * 2): TC_Gadget(I + 32) = TextGadget(#PB_Any, X, Y, Xc, 30, StringField(TC_Text, I * 3 + 1, ";"), #PB_Text_Center)
        X + (Xc * 1): TC_Gadget(I + #TC_String) = StringGadget(#PB_Any, X, Y, Xc * 2, 30, "")
        Y + 60
Next

Procedure TC_Update()
        For I = 0 To 6
                ParSec.D + ((GetGadgetState(TC_Gadget(I + #TC_Spin) ) * Val(StringField(TC_Text, I * 3 + 3, ";") ) ) )
        Next
        For I = 0 To 6
                SetGadgetText(TC_Gadget(I + #TC_String), StrD((ParSec) / Val(StringField(TC_Text, I * 3 + 3, ";") ) ) )
        Next
EndProcedure

        BindEvent(#PB_Event_Gadget, @TC_Update(), TC_Window, #PB_All, #PB_All)
        Repeat: Until WaitWindowEvent() = #PB_Event_CloseWindow

Re: Comment afficher tous les StringGadget

Publié : ven. 03/nov./2017 19:26
par Zorro
Tres bon code

je me suis contenté de "corriger" le code de micoute
je ne me suis pas mis a chercher a le faire a partir de Zero
ta solution est élégante :)

Re: Comment afficher tous les StringGadget

Publié : ven. 03/nov./2017 19:41
par Ollivier
Je crois que j'ai attrapé un flypingite aigüe. C'est une mutation de la souche originale : je ne supporte plus les codes à rallonge sans me bouffer le sol. Ça m'assomme vos pavasses, je ne sais pas comment vous faites...

Re: Comment afficher tous les StringGadget

Publié : sam. 04/nov./2017 7:52
par Micoute
Merci infiniment Ollivier, je n'aurais jamais pensé qu'on pouvait faire un code aussi court. Bravo et merci encore.

Re: Comment afficher tous les StringGadget

Publié : sam. 04/nov./2017 8:29
par Zorro
Ollivier a écrit :Ça m'assomme vos pavasses, je ne sais pas comment vous faites...
l'optimisation permanente
est symptomatique d'un utilisateur de calculatrice programmable
ou de quelqu'un qui a toujours codé sur des ordis en carton....

"l'optimisation", n'est pas toujours une révélation du quotient intellectuel ,
elle est parfois le révélateur d'une habitude de "pauvreté" matériel
bref l'optimisation, n'est pas forcement un choix
elle est parfois un réflexe conditionné ;)

Re: Comment afficher tous les StringGadget

Publié : sam. 04/nov./2017 10:34
par MLD
@ bonjour a tous
Jolie discussion sur l'optimisation de code.
Dans l'absolus plus un code est court plus il est rapide. (a condition qu'il soit programmé proprement).
En général un code très optimisé est plus difficile a lire par un autre programmeur. Donc plus difficile a reprendre ou a maintenir.
Il est parfois bon de ne pas trop optimiser pour les raisons ci-dessus.
Par contre vue la profusion de mémoire disponible et d'énormes quantités de stockage possible.certains ne se préoccupe plus de rien, et utilise souvent des marteaux pour écraser une mouche.
c'est notamment le cas de l'utilisation abusive d'une base de données alors que bien souvent un simple fichier séquentiel pourrait suffire.
L’optimisation raisonnable est quand même un bon réflexe. :wink: :lol:
Pour ma part je ne suis pas forcément un modèle du, genre. :roll: Il m'arrive souvent de reprendre des codes plusieurs mois après les avoir conçus et me poser la question pourquoi j'ai fait ceci ou cela comme ça. 8O
Cela vient du fait que lorsque l'on est en plein développement d'un logiciel le souci premier est le fonctionnement parfait de celui ci, l'idée d'optimisation vient forcément après. Sauf dans le cas ou le logiciel est destiné a du matériel embarqué;(Avionique.Marine.Automobile.) .Donc avec moins de mémoire ou de stockage.

Re: Comment afficher tous les StringGadget

Publié : sam. 04/nov./2017 11:42
par falsam
MLD a écrit :le cas de l'utilisation abusive d'une base de données alors que bien souvent un simple fichier séquentiel pourrait suffire.
Séquentiel ou base de données, il faudra bien à un moment charger les informations en mémoire.

Un fichier texte, est en général intégralement chargé en mémoire. Une base de données SQL, seule l'enregistrement sélectionnée est chargée en mémoire.

L'autre intérêt d'une base de données , et son extrême facilité à la manipuler (Trie, regroupement, Calculs, liaisons entres différentes tables, etc ...)