Page 1 sur 3

addition contenu de plusieurs StringGadget ( numériques)

Publié : mar. 25/déc./2007 17:31
par fouilloud
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. )

Publié : mar. 25/déc./2007 18:30
par case
voila un petit exemple :)
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

Publié : mar. 25/déc./2007 18:31
par Chris
Avec le signe +, tout simplement.

Code : Tout sélectionner

SetGadgetText(#total, GetGadgetText(#Gadget1)+ " " + GetGadgetText(#Gadget2)+ etc, etc, etc....)

Publié : mar. 25/déc./2007 19:46
par case
Chris a écrit :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 et
"10"+"10" = "1010"

Publié : mar. 25/déc./2007 19:48
par case
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

Publié : mar. 25/déc./2007 20:19
par Chris
case a écrit :
Chris a écrit :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 et
"10"+"10" = "1010"
Oui, j'ai pas testé le code.

J'avais pas vu que c'était du numérique. :lol:

Publié : mer. 26/déc./2007 14:49
par fouilloud
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

suite post précédant

Publié : mer. 26/déc./2007 15:37
par fouilloud
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 !!!

Publié : jeu. 27/déc./2007 14:04
par brossden
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 

Publié : jeu. 27/déc./2007 15:00
par fouilloud
merci brossden, je vais mélanger tout ça quelques temps.

Publié : ven. 28/déc./2007 12:06
par Ar-S
je viens de lire ce topic, j'aurai pu y répondre :) c'est qu'après tout je progresse :P

Publié : ven. 28/déc./2007 18:17
par Kwai chang caine
Il faut dire qu'on a de sacré profs .....
Reste encore à dégainer les codes aussi rapidement qu'eux :?

Publié : sam. 29/déc./2007 9:02
par Ar-S
Kwai chang caine a écrit : Reste encore à dégainer les codes aussi rapidement qu'eux :?
J'ai trop d'arthrite cérébrale pour ça KCC :P

Publié : sam. 29/déc./2007 9:04
par Kwai chang caine
:lol:

Publié : sam. 29/déc./2007 18:36
par fouilloud
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