Comment afficher tous les StringGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Comment afficher tous les StringGadget

Message 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

Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Comment afficher tous les StringGadget

Message 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

Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment afficher tous les StringGadget

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Comment afficher tous les StringGadget

Message 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 !
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment afficher tous les StringGadget

Message par Micoute »

C'est bien ce que je pense aussi, merci encore.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment afficher tous les StringGadget

Message 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
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Comment afficher tous les StringGadget

Message 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
;
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment afficher tous les StringGadget

Message 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.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Comment afficher tous les StringGadget

Message 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
Dernière modification par Ollivier le ven. 03/nov./2017 19:30, modifié 1 fois.
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Comment afficher tous les StringGadget

Message 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 :)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: Comment afficher tous les StringGadget

Message 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...
Avatar de l’utilisateur
Micoute
Messages : 2522
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Comment afficher tous les StringGadget

Message par Micoute »

Merci infiniment Ollivier, je n'aurais jamais pensé qu'on pouvait faire un code aussi court. Bravo et merci encore.
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 5.73 PB 6.00 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
Zorro
Messages : 2185
Inscription : mar. 31/mai/2016 9:06

Re: Comment afficher tous les StringGadget

Message 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é ;)
Image
Image
Site: http://michel.dobro.free.fr/
Devise :"dis moi ce dont tu as besoin, je t'expliquerai comment t'en passer"
Avatar de l’utilisateur
MLD
Messages : 1105
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Comment afficher tous les StringGadget

Message 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.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Comment afficher tous les StringGadget

Message 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 ...)
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Répondre