Code : Tout sélectionner
;Pourcentages
DeclareModule Pourcentage
Structure Calcul
Augmentation.f
Reduction.f
ValeurFinale.f
EndStructure
Global MonCalcul.Calcul
Declare CalculerPourcentage(ValeurTotale.f, ValeurPartielle.f)
Declare CalculerValeurPartielle(Pourcentage.f, ValeurTotale.f)
Declare CalculerValeurTotale(ValeurPartielle.f, Pourcentage.f)
Declare CalculReduction(ValeurInitiale.f, Pourcentage.f)
Declare CalculAugmentation(ValeurInitiale.f, Pourcentage.f)
Declare CalculerTauxVariation(ValeurInitiale.f, ValeurFinale.f)
EndDeclareModule
Module Pourcentage
Procedure CalculerPourcentage(ValeurTotale.f, ValeurPartielle.f)
Protected Resultat.f
Resultat = 100 * (ValeurPartielle / ValeurTotale)
ProcedureReturn Resultat
EndProcedure
;Debug CalculerPourcentage(360, 216) ;60
Procedure CalculerValeurPartielle(Pourcentage.f, ValeurTotale.f)
Protected Resultat.f
Resultat = (Pourcentage * ValeurTotale) / 100
ProcedureReturn Resultat
EndProcedure
;Debug CalculerValeurPartielle(360, 60) ;216
Procedure CalculerValeurTotale(ValeurPartielle.f, Pourcentage.f)
Protected Resultat.f
Resultat = 100 * (ValeurPartielle / Pourcentage)
ProcedureReturn Resultat
EndProcedure
;Debug CalculerValeurTotale(216, 60) ;360
Procedure CalculReduction(ValeurInitiale.f, Pourcentage.f)
Protected.f Reduction, ValeurFinale
MonCalcul\Reduction = ValeurInitiale * (Pourcentage / 100)
MonCalcul\ValeurFinale = ValeurInitiale * (1 - Pourcentage / 100)
ProcedureReturn Reduction
EndProcedure
;CalculReduction(360, 40)
;Debug MonCalcul\Reduction ;144
;Debug MonCalcul\ValeurFinale ;216
Procedure CalculAugmentation(ValeurInitiale.f, Pourcentage.f)
Protected.f Augmentation, ValeurFinale
MonCalcul\Augmentation = ValeurInitiale * (Pourcentage / 100)
MonCalcul\ValeurFinale = ValeurInitiale * (1 + Pourcentage / 100)
EndProcedure
;CalculAugmentation(360, 40)
;Debug MonCalcul\Augmentation ;144
;Debug MonCalcul\ValeurFinale ;504
Procedure CalculerTauxVariation(ValeurInitiale.f, ValeurFinale.f)
Protected Resultat.f
Resultat = 100 * (ValeurFinale - ValeurInitiale) / ValeurInitiale
ProcedureReturn Resultat
EndProcedure
;Debug CalculerTauxVariation(360, 216) ;-40
EndModule
CompilerIf #PB_Compiler_IsMainFile
Enumeration Fenetres
#Fenetre_Pourcentage
EndEnumeration
Enumeration Gadgets
#Container_Pourcentage
#Container_ValeurTotale
#Container_Augmentation
#Container_ValeurPartielle
#Container_Reduction
#Container_Variation
#Btn_Pourcentage
#Btn_ValeurTotale
#Btn_Augmentation
#Btn_ValeurPartielle
#Btn_Reduction
#Btn_Variation
#Txt_CalculPourcentage
#Txt_CalculValeurTotale
#Txt_CalculAugmentation
#Txt_CalculValeurPartielle
#Txt_CalculReduction
#Txt_CalculVariation
#Txt_Pourcentage
#Txt_ValeurTotale
#Txt_ValeurFinale
#Txt_ValeurPartielle
#Txt_ValeurFinaleReduction
#Txt_Variation
#Txt_Reduction
#Txt_Augmentation
#Txt_PourcentageValeurtotale
#Txt_PourcentageValeurPartielle
#Txt_ValTotValeurPartielle
#Txt_ValTotPourcentage
#Txt_AugValeurInitiale
#Txt_AugAugmentation
#Txt_ValPartValeurTotale
#Txt_ValPartPourcentage
#Txt_RedValeurInitiale
#Txt_RedReduction
#Txt_VarValeurInitiale
#Txt_VarValeurFinale
#Str_PourcentageValeurTotale
#Str_PourcentageValeurPartielle
#Str_valpartvaltot
#Str_Pourcentagevaltot
#Str_initaug
#Str_Augaug
#Str_totvalpart
#Str_Pcvalpart
#Str_InitRed
#Str_Redred
#Str_Initvar
#Str_Finalevar
EndEnumeration
Enumeration Polices
#Police
EndEnumeration
Global.f Vt, Vt2, Vt3, Vp, Vp2, Vp3,Pc, Pc2, Pc3, Pc4, Pc5, Pc6, Vi, Vi2, V3, Vf, Vf2
Global Evenement
Procedure Ouvrir_Fenetre_Pourcentage()
If OpenWindow(#Fenetre_Pourcentage, 448, 22, 617, 517, "Pourcentages", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
ContainerGadget(#Container_Pourcentage, 5, 5, 300, 160, #PB_Container_Raised)
TextGadget(#Txt_CalculPourcentage, 10, 10, 270, 20, "Calcul du pourcentage (%)", #PB_Text_Center)
TextGadget(#Txt_PourcentageValeurtotale, 10, 45, 110, 20, "Valeur totale :", #PB_Text_Right)
TextGadget(#Txt_PourcentageValeurPartielle, 10, 75, 110, 20, "Valeur partielle :", #PB_Text_Right)
TextGadget(#Txt_Pourcentage, 10, 125, 270, 20, "Pourcentage :", #PB_Text_Center)
StringGadget(#Str_PourcentageValeurTotale, 130, 40, 115, 20, "")
StringGadget(#Str_PourcentageValeurPartielle, 130, 70, 115, 20, "")
ButtonGadget(#Btn_Pourcentage, 255, 70, 30, 20, "Ok")
CloseGadgetList()
ContainerGadget(#Container_Variation, 310, 5, 300, 160, #PB_Container_Raised)
TextGadget(#Txt_CalculVariation, 10, 10, 270, 20, "Calcul de variation", #PB_Text_Center)
TextGadget(#Txt_VarValeurInitiale, 10, 45, 110, 20, "Valeur initiale :", #PB_Text_Right)
TextGadget(#Txt_VarValeurFinale, 10, 75, 110, 20, "Valeur finale :", #PB_Text_Right)
TextGadget(#Txt_Variation, 10, 125, 270, 20, "Variation : ", #PB_Text_Center)
StringGadget(#Str_Initvar, 130, 40, 115, 20, "")
StringGadget(#Str_Finalevar, 130, 70, 115, 20, "")
ButtonGadget(#Btn_Variation, 255, 70, 30, 20, "Ok")
CloseGadgetList()
ContainerGadget(#Container_ValeurTotale, 5, 335, 300, 160, #PB_Container_Raised)
TextGadget(#Txt_CalculValeurTotale, 10, 10, 270, 20, "Calcul de la valeur totale", #PB_Text_Center)
TextGadget(#Txt_ValTotValeurPartielle, 10, 45, 110, 20, "Valeur partielle :", #PB_Text_Right)
TextGadget(#Txt_ValTotPourcentage, 10, 75, 110, 20, "Pourcentage :", #PB_Text_Right)
TextGadget(#Txt_ValeurTotale, 10, 125, 270, 20, "Valeur totale : ", #PB_Text_Center)
StringGadget(#Str_valpartvaltot, 130, 40, 115, 20, "")
StringGadget(#Str_Pourcentagevaltot, 130, 70, 115, 20, "")
ButtonGadget(#Btn_ValeurTotale, 255, 70, 30, 20, "Ok")
CloseGadgetList()
ContainerGadget(#Container_ValeurPartielle, 310, 335, 300, 160, #PB_Container_Raised)
TextGadget(#Txt_CalculValeurPartielle, 0, 10, 290, 20, "Calcul de la valeur partielle", #PB_Text_Center)
TextGadget(#Txt_ValPartValeurTotale, 10, 45, 110, 20, "Valeur totale :", #PB_Text_Right)
TextGadget(#Txt_ValPartPourcentage, 10, 75, 110, 20, "Pourcentage :", #PB_Text_Right)
TextGadget(#Txt_ValeurPartielle, 10, 125, 270, 20, "Valeur partielle : ", #PB_Text_Center)
StringGadget(#Str_totvalpart, 130, 40, 115, 20, "")
StringGadget(#Str_Pcvalpart, 130, 70, 115, 20, "")
ButtonGadget(#Btn_ValeurPartielle, 255, 70, 30, 20, "Ok")
CloseGadgetList()
ContainerGadget(#Container_Augmentation, 5, 170, 300, 160, #PB_Container_Raised)
TextGadget(#Txt_CalculAugmentation, 10, 10, 270, 20, "Calcul d'une augmentation", #PB_Text_Center)
TextGadget(#Txt_AugValeurInitiale, 10, 45, 110, 20, "Valeur initiale :", #PB_Text_Right)
TextGadget(#Txt_AugAugmentation, 10, 75, 110, 20, "Augmentation %", #PB_Text_Right)
TextGadget(#Txt_ValeurFinale, 10, 125, 270, 20, "Valeur finale : ", #PB_Text_Center)
TextGadget(#Txt_Augmentation, 10, 100, 270, 20, "Augmentation (valeur) : ", #PB_Text_Center)
StringGadget(#Str_initaug, 130, 40, 115, 20, "")
StringGadget(#Str_Augaug, 130, 70, 115, 20, "")
ButtonGadget(#Btn_Augmentation, 255, 70, 30, 20, "Ok")
CloseGadgetList()
ContainerGadget(#Container_Reduction, 310, 170, 300, 160, #PB_Container_Raised)
TextGadget(#Txt_CalculReduction, 10, 10, 270, 20, "Calcul d'une réduction", #PB_Text_Center)
TextGadget(#Txt_RedValeurInitiale, 10, 45, 110, 20, "Valeur initiale :", #PB_Text_Right)
TextGadget(#Txt_RedReduction, 10, 75, 110, 20, "Réduction % :", #PB_Text_Right)
TextGadget(#Txt_ValeurFinaleReduction, 10, 125, 270, 20, "Valeur finale : ", #PB_Text_Center)
TextGadget(#Txt_Reduction, 10, 100, 270, 20, "Réduction (valeur) : ", #PB_Text_Center)
StringGadget(#Str_InitRed, 130, 40, 115, 20, "")
StringGadget(#Str_Redred, 130, 70, 115, 20, "")
ButtonGadget(#Btn_Reduction, 255, 70, 30, 20, "Ok")
CloseGadgetList()
; Gadget Fonts
For i = #Txt_CalculPourcentage To #Txt_Augmentation
SetGadgetFont(i, LoadFont(#Police, "DejaVu Sans", 10, #PB_Font_Bold|#PB_Font_HighQuality))
Next i
EndIf
EndProcedure
Ouvrir_Fenetre_Pourcentage()
; Boucle principale
Repeat
Evenement = WaitWindowEvent()
Select Evenement
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Pourcentage
Vt = ValF(GetGadgetText(#Str_PourcentageValeurTotale))
Vp = ValF(GetGadgetText(#Str_PourcentageValeurPartielle))
Pc = Pourcentage::CalculerPourcentage(Vt, Vp)
If GetGadgetText(#Str_PourcentageValeurTotale) <> "" And GetGadgetText(#Str_PourcentageValeurPartielle) <> ""
SetGadgetText(#Txt_Pourcentage, "Pourcentage :" + StrF(Pc) + " %")
EndIf
Case #Btn_ValeurTotale
Vp2 = ValF(GetGadgetText(#Str_valpartvaltot))
Pc2 = ValF(GetGadgetText(#Str_Pourcentagevaltot))
Vt2 = Pourcentage::CalculerValeurTotale(Vp2, Pc2)
If GetGadgetText(#Str_valpartvaltot) <> "" And GetGadgetText(#Str_Pourcentagevaltot) <> ""
SetGadgetText(#Txt_ValeurTotale, "Valeur totale : " + StrF(Vt2))
EndIf
Case #Btn_Augmentation
Vi = ValF(GetGadgetText(#Str_initaug))
Pc3 = ValF(GetGadgetText(#Str_Augaug))
If GetGadgetText(#Str_initaug) <> "" And GetGadgetText(#Str_Augaug) <> ""
Pourcentage::CalculAugmentation(Vi, Pc3)
SetGadgetText(#Txt_Augmentation, "Augmentation (valeur) : " + StrF(Pourcentage::MonCalcul\Augmentation,2))
SetGadgetText(#Txt_ValeurFinale, "Valeur finale : " + StrF(Pourcentage::MonCalcul\ValeurFinale,2))
EndIf
Case #Btn_ValeurPartielle
Vt3 = ValF(GetGadgetText(#Str_totvalpart))
Pc4 = ValF(GetGadgetText(#Str_Pcvalpart))
If GetGadgetText(#Str_totvalpart) <> "" And GetGadgetText(#Str_Pcvalpart) <> ""
Vp3 = Pourcentage::CalculerValeurPartielle(Pc4, Vt3)
SetGadgetText(#Txt_ValeurPartielle, "Valeur partielle : " + StrF(Vp3))
EndIf
Case #Btn_Reduction
Vi2 = ValF(GetGadgetText(#Str_InitRed))
Pc5 = ValF(GetGadgetText(#Str_Redred))
If GetGadgetText(#Str_InitRed) <> "" And GetGadgetText(#Str_Redred) <> ""
Pourcentage::CalculReduction(Vi2, Pc5)
SetGadgetText(#Txt_Reduction, "Réduction (valeur) : " + StrF(Pourcentage::MonCalcul\Reduction,2))
SetGadgetText(#Txt_ValeurFinaleReduction, "Valeur finale : " + StrF(Pourcentage::MonCalcul\ValeurFinale,2))
EndIf
Case #Btn_Variation
Vi3 = ValF(GetGadgetText(#Str_Initvar))
Vf2 = ValF(GetGadgetText(#Str_Finalevar))
If GetGadgetText(#Str_Initvar) <> "" And GetGadgetText(#Str_Finalevar) <> ""
Pc6 = Pourcentage::CalculerTauxVariation(Vi3, Vf2)
SetGadgetText(#Txt_Variation, "Variation : " + StrF(Pc6) + " %")
EndIf
EndSelect
Case #PB_Event_CloseWindow
Select EventWindow()
Case #Fenetre_Pourcentage
CloseWindow(#Fenetre_Pourcentage)
Break
EndSelect
EndSelect
ForEver
CompilerEndIf