Calcul de caisse

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Apprenti
Messages : 45
Inscription : mar. 28/déc./2004 23:06

Message par Apprenti »

Merci pour ton aide

Je remplace ;
DefType.f Montant500
par
Global Montant500

et

SetGadgetText(#Txt_TotalBillets, StrF(General,2)+" €")
par
SetGadgetText(#Txt_TotalBillets, StrF(Calcul(),2)+" €")

Cela ne marche pas

Calcul () est-il considéré comme un chiffre ?
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

Si tu veux considérer Calcul() comme un "chiffre"

Tu dois faire

Code : Tout sélectionner

Procédure.f Calcul()
   ton code ici
   ProcedureReturn Somme.f
Endprocedure
Utilise procedureReturn pour que ta procédure retourne une valeur .

DefType.f Montant500
par
Global Montant500
Si Chris avait mis Deftype.f c'est pour que le type des variables qui suivent soit flottant

Si tu veux utiliser Global il faut écrire
Global Montant500.f,Montant200.f, etc

Et ça , c'est une autre variante .

Code : Tout sélectionner

 ;- Window Constants 
Enumeration 
  #Win_0 
EndEnumeration 

;- Gadget Constants 
Enumeration 
  #Txt_0 
  #Txt_TitreBillet 
  #Txt_Valeur
  #Str_Nb=#PB_Compiler_EnumerationValue+6
  #Txt_Total=#PB_Compiler_EnumerationValue+6 
  #Txt_TotalBillets=#PB_Compiler_EnumerationValue+6 
  #Txt_TitreValeur 
  #Txt_TitreNbre 
  #Txt_TitreTotal 
EndEnumeration 
;-Structure
Structure Caisse
  Valeur.f
  Nb.l
  Total.f
EndStructure
Dim Caisse.Caisse(6)  

;- Fonts 
Global FontID1, FontID2 
FontID1 = LoadFont(1, "Arial", 14, #PB_Font_Bold) 
FontID2 = LoadFont(2, "Arial", 12, #PB_Font_Bold) 

Procedure Open_Win_0() 
  If OpenWindow(#Win_0, 216, 0, 394, 240,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Caisse exemple") 
    If CreateGadgetList(WindowID()) 
      TextGadget(#Txt_0, 5, 5, 200, 25, "Relevé de caisse du:") 
      ; Le gadget du titre aura une police Arial 14 
      SetGadgetFont(#Txt_0, FontID1) 
      
      ; Tous les autres auront une police Arial 12 
      SetGadgetFont(#PB_Default, FontID2) 
      
      TextGadget(#Txt_TitreBillet, 10, 50, 70, 20, "Billets") 
      For i=0 To 6
        Read T$
        Caisse(i)\Valeur=Val(T$)
        TextGadget(#Txt_Valeur+i, 145, 80+i*20, 60, 20, T$, #PB_Text_Right) 
        StringGadget(#Str_Nb+i, 210, 80+i*20, 50, 20, "", #PB_String_Numeric|#ES_RIGHT) 
        TextGadget(#Txt_Total+i, 270, 80+i*20, 105, 20, "", #PB_Text_Right | #PB_Text_Border) 
      Next i
      TextGadget(#Txt_TotalBillets, 10, 80, 105, 20, "", #PB_Text_Right | #PB_Text_Border) 
      TextGadget(#Txt_TitreValeur, 145, 50, 60, 20, "Valeur") 
      TextGadget(#Txt_TitreNbre, 210, 50, 50, 20, "Nbre") 
      TextGadget(#Txt_TitreTotal, 265, 50, 105, 20, "Total") 
    EndIf 
  EndIf 
  ActivateGadget(#Str_Nb) 
EndProcedure 

Procedure CalculCaisse(Valeur.l)
  No=Valeur-#Str_Nb
  If EventType() = #PB_EventType_Change And No>=0 And No<7
    Caisse(No)\Total = Val(GetGadgetText(#Str_Nb+No))*Caisse(No)\Valeur 
    SetGadgetText(#Txt_Total+No,StrF(Caisse(No)\Total,2)+ " €" ) 
    For i=0 To 6
      Somme + Caisse(i)\Total
    Next i
    SetGadgetText(#Txt_TotalBillets, StrF(Somme,2)+" €") 
  EndIf 
EndProcedure         
Open_Win_0() 

Repeat 
  Select WaitWindowEvent() 
    Case #PB_EventGadget 
      CalculCaisse(EventGadgetID()) 
    Case  #PB_EventCloseWindow 
      Quit = #True 
  EndSelect 
Until Quit 
End 

DataSection
Data.s "500.00","200.00","100.00","50.00","20.00","10.00","5.00"
Apprenti
Messages : 45
Inscription : mar. 28/déc./2004 23:06

Message par Apprenti »

ouille cela se complique
faut que je comprenne les différentes variables

merci, mais ton code marche en version démo

mais je peux laisser comme s'était vu que çà marche
un jour j'optimiserai

de toute façon j'ai pas fini
- nsérer une date en fonction d'un parametre
- pouvoir saisir un detail dans une cellule....
Répondre