addition contenu de plusieurs StringGadget ( numériques)
addition contenu de plusieurs StringGadget ( numériques)
bonjour et bonne fêtes à tous,
je n'arrive pas à trouver ce que je dois employer comme Cdes pour additionner puis ajouter le total dans un autre StringGadget
voici un abrégé ( au total env. une centaine d'entrées )
--------------------------------------------------------------------------
#fenetre_principale = 0
#Gadget_janvier_nour=0
#Gadget_janvier_resto=1
#Gadget_tot_nour=2
#Gadget_tot_janv=3
#Gadget_fevr_nour=4
OpenWindow ( 0 , 300, 200, 800, 600, "DEPENSES" , #PB_Window_SystemMenu )
CreateGadgetList ( WindowID ( #fenetre_principale ))
janvier_nour=StringGadget ( #Gadget_janvier_nour , 40, 40, 70, 20, "",#PB_String_Numeric )
fevr_nour=StringGadget ( #Gadget_fevr_nour , 130, 40, 70, 20, "",#PB_String_Numeric )
janvier_resto=StringGadget ( #Gadget_janvier_resto , 40, 70, 70, 20, "",#PB_String_Numeric )
tot_nour=StringGadget ( #Gadget_tot_nour , 230, 40, 100, 20, "",#PB_String_Numeric )
tot_janv=StringGadget ( #Gadget_tot_janv , 40, 120, 70, 20, "" ,#PB_String_Numeric )
Repeat
Event = WaitWindowEvent ()
Until Event = #PB_Event_CloseWindow : End
---------------------------------------------------------------------------
merci si vous pouvez me faire un exemple pour une addition et son report dans "tot_nour" ( par ex. )
je n'arrive pas à trouver ce que je dois employer comme Cdes pour additionner puis ajouter le total dans un autre StringGadget
voici un abrégé ( au total env. une centaine d'entrées )
--------------------------------------------------------------------------
#fenetre_principale = 0
#Gadget_janvier_nour=0
#Gadget_janvier_resto=1
#Gadget_tot_nour=2
#Gadget_tot_janv=3
#Gadget_fevr_nour=4
OpenWindow ( 0 , 300, 200, 800, 600, "DEPENSES" , #PB_Window_SystemMenu )
CreateGadgetList ( WindowID ( #fenetre_principale ))
janvier_nour=StringGadget ( #Gadget_janvier_nour , 40, 40, 70, 20, "",#PB_String_Numeric )
fevr_nour=StringGadget ( #Gadget_fevr_nour , 130, 40, 70, 20, "",#PB_String_Numeric )
janvier_resto=StringGadget ( #Gadget_janvier_resto , 40, 70, 70, 20, "",#PB_String_Numeric )
tot_nour=StringGadget ( #Gadget_tot_nour , 230, 40, 100, 20, "",#PB_String_Numeric )
tot_janv=StringGadget ( #Gadget_tot_janv , 40, 120, 70, 20, "" ,#PB_String_Numeric )
Repeat
Event = WaitWindowEvent ()
Until Event = #PB_Event_CloseWindow : End
---------------------------------------------------------------------------
merci si vous pouvez me faire un exemple pour une addition et son report dans "tot_nour" ( par ex. )
voila un petit exemple
j'ai légèrement modifié le code de base

j'ai légèrement modifié le code de base
#fenetre_principale = 0
OpenWindow ( 0 , 300, 200, 800, 600, "DEPENSES" , #PB_Window_SystemMenu )
CreateGadgetList ( WindowID ( #fenetre_principale ))
janvier_nour = StringGadget ( #PB_Any ,40 ,00 ,70 ,20 , "" , #PB_String_Numeric )
janvier_resto = StringGadget ( #PB_Any ,40 ,20 ,70 ,20 , "" , #PB_String_Numeric )
tot_janv = StringGadget ( #PB_Any ,40 ,60,70 ,20 , "" , #PB_String_Numeric )
fevr_nour = StringGadget ( #PB_Any ,40 ,100,70 ,20 , "" , #PB_String_Numeric )
fevr_resto = StringGadget ( #PB_Any ,40 ,120,70 ,20 , "" , #PB_String_Numeric )
tot_fevr = StringGadget ( #PB_Any ,40 ,160,70 ,20 , "" , #PB_String_Numeric )
tot_nour = StringGadget ( #PB_Any ,40 ,200,100,20 , "" , #PB_String_Numeric )
tot_resto = StringGadget ( #PB_Any ,40 ,220,100,20 , "" , #PB_String_Numeric )
tot_tout = StringGadget ( #PB_Any ,40 ,260,100,20 , "" , #PB_String_Numeric )
Repeat
Event = WaitWindowEvent ()
Select Event
Case #PB_Event_Gadget ; utilisation d'un gadget
Select EventGadget () ; on regarde quel gadget a ete utilisé
Case janvier_nour
SetGadgetText (tot_nour, Str ( Val ( GetGadgetText (janvier_nour))+ Val ( GetGadgetText (fevr_nour))))
SetGadgetText (tot_janv, Str ( Val ( GetGadgetText (janvier_nour))+ Val ( GetGadgetText (janvier_resto))))
SetGadgetText (tot_tout, Str ( Val ( GetGadgetText (tot_nour))+ Val ( GetGadgetText (tot_resto))))
Case janvier_resto
SetGadgetText (tot_janv, Str ( Val ( GetGadgetText (janvier_nour))+ Val ( GetGadgetText (janvier_resto))))
SetGadgetText (tot_resto, Str ( Val ( GetGadgetText (janvier_resto))+ Val ( GetGadgetText (fevr_resto))))
SetGadgetText (tot_tout, Str ( Val ( GetGadgetText (tot_nour))+ Val ( GetGadgetText (tot_resto))))
Case fevr_nour
SetGadgetText (tot_nour, Str ( Val ( GetGadgetText (janvier_nour))+ Val ( GetGadgetText (fevr_nour))))
SetGadgetText (tot_fevr, Str ( Val ( GetGadgetText (fevr_nour))+ Val ( GetGadgetText (fevr_resto))))
SetGadgetText (tot_tout, Str ( Val ( GetGadgetText (tot_nour))+ Val ( GetGadgetText (tot_resto))))
Case fevr_resto
SetGadgetText (tot_fevr, Str ( Val ( GetGadgetText (fevr_nour))+ Val ( GetGadgetText (fevr_resto))))
SetGadgetText (tot_resto, Str ( Val ( GetGadgetText (janvier_resto))+ Val ( GetGadgetText (fevr_resto))))
SetGadgetText (tot_tout, Str ( Val ( GetGadgetText (tot_nour))+ Val ( GetGadgetText (tot_resto))))
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Avec le signe +, tout simplement.
Code : Tout sélectionner
SetGadgetText(#total, GetGadgetText(#Gadget1)+ " " + GetGadgetText(#Gadget2)+ etc, etc, etc....)
non ca ne fonctione pas car les stringgadget contiennent des strings etChris a écrit :Avec le signe +, tout simplement.
Code : Tout sélectionner
SetGadgetText(#total, GetGadgetText(#Gadget1)+ " " + GetGadgetText(#Gadget2)+ etc, etc, etc....)
"10"+"10" = "1010"
et un autre avec tout les mois de l'année 

#fenetre_principale = 0
OpenWindow ( 0 , 300, 200, 800, 600, "DEPENSES" , #PB_Window_SystemMenu )
CreateGadgetList ( WindowID ( #fenetre_principale ))
Dim mois_nour(12) ; garde les handle des gadget pour la nouriture chaques mois
Dim mois_resto(12) ; garde les handle des gadget pour les restaurants chaques mois
Dim tot_mensuel(12) ; garde les handle pourles totaux mensuels
month$= "janvier,fevrier,mars,avril,mai,juin,juillet,aout,septembre,octobre,novembre,decembre" ; nom des mois pour les labels
For a=1 To CountString (month$, "," )+1
mois_nour(a)= StringGadget ( #PB_Any ,0,y,70,16, "" , #PB_String_Numeric )
TextGadget ( #PB_Any ,80,y,80,16, "nour " + StringField (month$,a, "," ))
y=y+20
Next
y=0
For a=1 To CountString (month$, "," )+1
mois_resto(a)= StringGadget ( #PB_Any ,200,y,70,16, "" , #PB_String_Numeric )
TextGadget ( #PB_Any ,280,y,80,16, "resto " + StringField (month$,a, "," ))
y=y+20
Next
y=0
For a=1 To CountString (month$, "," )+1
tot_mensuel(a)= StringGadget ( #PB_Any ,400,y,70,16, "" , #PB_String_Numeric )
TextGadget ( #PB_Any ,480,y,80,16, "total " + StringField (month$,a, "," ))
y=y+20
Next
y=y+40
tot_nour= StringGadget ( #PB_Any ,200,y,70,16, "" , #PB_String_Numeric )
TextGadget ( #PB_Any ,280,y,80,16, "total nouriture " )
y=y+20
tot_resto= StringGadget ( #PB_Any ,200,y,70,16, "" , #PB_String_Numeric )
TextGadget ( #PB_Any ,280,y,80,16, "total resto " )
y=y+20
;
tot_total= StringGadget ( #PB_Any ,200,y,70,16, "" , #PB_String_Numeric )
TextGadget ( #PB_Any ,280,Y,80,16, "total depenses " )
Y=Y+20
Repeat
Event = WaitWindowEvent ()
Select Event
Case #PB_Event_Gadget ; utilisation d'un gadget
If EventType ()= #PB_EventType_Change ;si le contenu d'un gadget a changé
gad= EventGadget () ; on regarde quel gadget a ete utilisé
totr=0
totn=0
For a= 1 To 12
If gad=mois_nour(a)
SetGadgetText (tot_mensuel(a), Str ( Val ( GetGadgetText (mois_nour(a)))+ Val ( GetGadgetText (mois_resto(a)))))
EndIf
If gad=mois_resto(a)
SetGadgetText (tot_mensuel(a), Str ( Val ( GetGadgetText (mois_nour(a)))+ Val ( GetGadgetText (mois_resto(a)))))
EndIf
totr=totr+ Val ( GetGadgetText (mois_resto(a)))
totn=totn+ Val ( GetGadgetText (mois_nour(a)))
Next
;
SetGadgetText (tot_nour, Str (totn))
SetGadgetText (tot_resto, Str (totr))
SetGadgetText (tot_total, Str (totn+totr))
EndIf
;
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
Oui, j'ai pas testé le code.case a écrit :non ca ne fonctione pas car les stringgadget contiennent des strings etChris a écrit :Avec le signe +, tout simplement.
Code : Tout sélectionner
SetGadgetText(#total, GetGadgetText(#Gadget1)+ " " + GetGadgetText(#Gadget2)+ etc, etc, etc....)
"10"+"10" = "1010"
J'avais pas vu que c'était du numérique.

bonjour,
merci de la réponse.
j'avais fait erreur en mettant "#PB_String_Numeric" car avec les euros ont à intérêt tenir compte des centimes.
mais avec cette proposition ( + élégante ) comment faire ?
dans un temps ou j'avais encore une mémoire non usée par les ans j'avais faite cela en "visual basic" mais je suis obligé de l'ouvrir dans visu basic car impossible de créer un .exe.
cela m'avais paru beaucoup + simple ? il est vrai qu'avec les livres disponibles il était facile de tout trouver, et le seul en PureBasic etant en anglais ...hélas
merci de la réponse.
j'avais fait erreur en mettant "#PB_String_Numeric" car avec les euros ont à intérêt tenir compte des centimes.
mais avec cette proposition ( + élégante ) comment faire ?
dans un temps ou j'avais encore une mémoire non usée par les ans j'avais faite cela en "visual basic" mais je suis obligé de l'ouvrir dans visu basic car impossible de créer un .exe.
cela m'avais paru beaucoup + simple ? il est vrai qu'avec les livres disponibles il était facile de tout trouver, et le seul en PureBasic etant en anglais ...hélas
suite post précédant
je suis revenu vers ta 1er solution, avec StrF et ValF les décimales sont prisent en compte. OK
par contre je ne vois pas avec la 2ème ?
ensuite je vais voir à supprimer les zéros inutiles, faire alignement des chiffres par rang ( comme pour une addition )..etc
pas trop optimiste le vieux !!!
par contre je ne vois pas avec la 2ème ?
ensuite je vais voir à supprimer les zéros inutiles, faire alignement des chiffres par rang ( comme pour une addition )..etc
pas trop optimiste le vieux !!!
Premier Problème :
Code : Tout sélectionner
#fenetre_principale = 0
#Gadget_janvier_nour=0
#Gadget_janvier_resto=1
#Gadget_tot_nour=2
#Gadget_tot_janv=3
#Gadget_fevr_nour=4
OpenWindow ( 0 , 300, 200, 800, 600, "DEPENSES" , #PB_Window_SystemMenu )
CreateGadgetList ( WindowID ( #fenetre_principale ))
janvier_nour=StringGadget ( #Gadget_janvier_nour , 40, 40, 70, 20, "100",#PB_String_Numeric )
fevr_nour=StringGadget ( #Gadget_fevr_nour , 130, 40, 70, 20, "100",#PB_String_Numeric )
janvier_resto=StringGadget ( #Gadget_janvier_resto , 40, 70, 70, 20, "300",#PB_String_Numeric )
tot_nour=StringGadget ( #Gadget_tot_nour , 230, 40, 100, 20, "",#PB_String_Numeric )
tot_janv=StringGadget ( #Gadget_tot_janv , 40, 120, 70, 20, "" ,#PB_String_Numeric )
;-------------------------------
Procedure calcul()
SetGadgetText(#Gadget_tot_nour ,Str(Val(GetGadgetText(#Gadget_janvier_nour))+Val(GetGadgetText(#Gadget_fevr_nour))))
SetGadgetText(#Gadget_tot_janv ,Str(Val(GetGadgetText(#Gadget_janvier_nour))+Val(GetGadgetText(#Gadget_janvier_resto))))
EndProcedure
;-------------------------------
Repeat
Event = WaitWindowEvent ()
GadgetID = EventGadget()
If Event = #PB_Event_Gadget
If GadgetID = #Gadget_janvier_nour Or GadgetID = #Gadget_janvier_resto Or GadgetID = #Gadget_fevr_nour
calcul()
EndIf
EndIf
Debug Event
Until Event = #PB_Event_CloseWindow : End
Denis
Bonne Jounée à tous
Bonne Jounée à tous
- Kwai chang caine
- Messages : 6989
- Inscription : sam. 23/sept./2006 18:32
- Localisation : Isere
boujour,
encore des PB:
1 ----
je désire avoir une font diff. pour afficher l'année en cours:
LoadFont(1, "Arial", 14)
SetGadgetFont(#PB_Default, FontID(1))
TextGadget(#Text_39, 560, 20, 60, 30 ,"2008",#PB_Text_Center)
mais ensuite je n'arrive pas à la supprimer ( FreeFont ) ? et lorsque j'entre mes valeurs de dépense dans les StringGadgets les chiffres sont trop gros
2 ----
comment écrire les chiffres par la droite dans les StringGadgets, ce qui en + arrêterais les décimales à deux dans ceux récupérants les valeurs d'additions.
merci
encore des PB:
1 ----
je désire avoir une font diff. pour afficher l'année en cours:
LoadFont(1, "Arial", 14)
SetGadgetFont(#PB_Default, FontID(1))
TextGadget(#Text_39, 560, 20, 60, 30 ,"2008",#PB_Text_Center)
mais ensuite je n'arrive pas à la supprimer ( FreeFont ) ? et lorsque j'entre mes valeurs de dépense dans les StringGadgets les chiffres sont trop gros
2 ----
comment écrire les chiffres par la droite dans les StringGadgets, ce qui en + arrêterais les décimales à deux dans ceux récupérants les valeurs d'additions.
merci