addition contenu de plusieurs StringGadget ( numériques)

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
fouilloud
Messages : 34
Inscription : ven. 07/déc./2007 17:15

addition contenu de plusieurs StringGadget ( numériques)

Message 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. )
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message 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
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

Avec le signe +, tout simplement.

Code : Tout sélectionner

SetGadgetText(#total, GetGadgetText(#Gadget1)+ " " + GetGadgetText(#Gadget2)+ etc, etc, etc....)
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message 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"
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Message 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
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message 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:
fouilloud
Messages : 34
Inscription : ven. 07/déc./2007 17:15

Message 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
fouilloud
Messages : 34
Inscription : ven. 07/déc./2007 17:15

suite post précédant

Message 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 !!!
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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 
Denis

Bonne Jounée à tous
fouilloud
Messages : 34
Inscription : ven. 07/déc./2007 17:15

Message par fouilloud »

merci brossden, je vais mélanger tout ça quelques temps.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

je viens de lire ce topic, j'aurai pu y répondre :) c'est qu'après tout je progresse :P
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Il faut dire qu'on a de sacré profs .....
Reste encore à dégainer les codes aussi rapidement qu'eux :?
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message 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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

:lol:
fouilloud
Messages : 34
Inscription : ven. 07/déc./2007 17:15

Message 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
Répondre