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"