MODULES énumérations publiques ou privées
Publié : mar. 21/juil./2015 9:57
Bonjour à tous,
je souhaite faire un module où il va y avoir plusieurs fenêtres et dans chaque fenêtres, il y aura des gadgets, mais je ne sais pas comment je pourrais faire mes énumérations !
Doivent-elles être dans l'espace public ou privé ?
Dois-je les mettre dans les 2 ?
Je vous remercie pour vos réponses
Exemple:
je souhaite faire un module où il va y avoir plusieurs fenêtres et dans chaque fenêtres, il y aura des gadgets, mais je ne sais pas comment je pourrais faire mes énumérations !
Doivent-elles être dans l'espace public ou privé ?
Dois-je les mettre dans les 2 ?
Je vous remercie pour vos réponses
Exemple:
Code : Tout sélectionner
;Module géométrie
;Auteur : Micoute
;Date : 20 juillet 2015
;Version PB : 5.31 (x86)
;Démo : oui
EnableExplicit
DeclareModule Police
Global FontID1
Global FontID2
Global FontID3
Global FontID4
EndDeclareModule
DeclareModule Verification
Declare checkFloatInput(gadget)
EndDeclareModule
;carré
DeclareModule Carre
Enumeration Fenetre
#Fenetre_Carre = 1
EndEnumeration
Enumeration Gadgets
#Str_cote_carre
#Str_Surface_carre
#Str_Diagonale_carre
#Str_perimetre_carre
#Carre
EndEnumeration
Structure ObjetCarre
ID.i
Cote.d
Surface.d
Diagonale.d
Perimetre.d
EndStructure
Global.ObjetCarre *Carre
Declare Ouvrir_Fenetre_Carre()
Declare CreerCarre(ID, Co.d)
EndDeclareModule
;cercle
DeclareModule Cercle
Enumeration Fenetre
#Fenetre_Cercle = 2
EndEnumeration
Enumeration Gadgets
#Str_perimetre_cercle = 5
#Str_Rayon_cercle
#Str_Surface_Cercle
#Str_Diametre_Cercle
#Cercle
EndEnumeration
Structure ObjetCercle
ID.i
Rayon.d
Diametre.d
Perimetre.d
Surface.d
EndStructure
Global.ObjetCercle *Cercle
Declare Ouvrir_Fenetre_Cercle()
Declare CreerCercle(ID, Rayon.d)
EndDeclareModule
;rectangle
DeclareModule Rectangle
Enumeration Fenetre
#Fenetre_Rectangle = 3
EndEnumeration
Enumeration Gadgets
#Str_perimetre_Rectangle = 10
#Str_Largeur_Rectangle
#Str_Longueur_Rectangle
#Str_Surface_rectangle
#Str_Diagonale_rectangle
#Rectangle
EndEnumeration
Structure ObjetRectangle
Id.i
Longueur.d
Largeur.d
Perimetre.d
Surface.d
Diagonale.d
EndStructure
Global.ObjetRectangle *Rectangle
Declare Ouvrir_Fenetre_Rectangle()
Declare CreerRectangle(Id, Longueur.d, Largeur.d)
EndDeclareModule
;anneau
DeclareModule Anneau
Enumeration Fenetre
#Fenetre_Anneau = 4
EndEnumeration
Enumeration gadgets
#Str_DE = 16
#Str_DI
#Str_DIn
#Str_La
#Str_SU
#Anneau
EndEnumeration
Structure ObjetAnneau
ID.i
DiametreInterne.d
DiametreExterne.d
DiametreIntermediaire.d
Largeur.d
Surface.d
EndStructure
Global.ObjetAnneau *Anneau
Declare Ouvrir_Fenetre_Anneau()
Declare CreerAnneau(ID, Di.d, De.d)
EndDeclareModule
;triangle rectangle
DeclareModule TriangleRectangle
Enumeration Fenetre
#Fenetre_TriangleR = 5
EndEnumeration
Enumeration Gadgets
#Str_Base_TR = 22
#Str_Hauteur_TR
#Str_Hypothenuse_TR
#Str_Perimetre_TR
#Str_Surface_TR
#TriangleRectangle
EndEnumeration
Structure ObjetTriangleRectangle
ID.i
Base.d
Hauteur.d
Hypothenuse.d
Perimetre.d
Surface.d
EndStructure
Global.ObjetTriangleRectangle *TriangleRectangle
Declare Ouvrir_Fenetre_TriangleRectangle()
Declare CreerTriangleRectangle(Id, Base.d, Hauteur.d)
EndDeclareModule
;losange
DeclareModule Losange
Enumeration Fenetre
#Fenetre_Losange = 6
EndEnumeration
Enumeration Gadgets
#Str_Cote_Losange = 28
#Str_Surface_Losange
#Str_Perimetre_Losange
#Losange
EndEnumeration
Structure ObjetLosange
ID.i
Cote_Losange.d
Surface_Losange.d
Perimetre_Losange.d
EndStructure
Global.ObjetLosange *Losange
Declare Ouvrir_Fenetre_Losange()
Declare CreerLosange(ID, Cote_Losange.d)
EndDeclareModule
;parallelogramme
DeclareModule Parallelogramme
Enumeration Fenetre
#Fenetre_Parallelogramme = 7
EndEnumeration
Enumeration gadgets
#Str_Longueur_Parallelogramme = 32
#Str_Largeur_Parallelogramme
#Str_Hauteur_Parallelogramme
#Str_Surface_Parallelogramme
#Str_Perimetre_Parallelogramme
#Parallelogramme
EndEnumeration
Structure ObjetParallelogramme
ID.i
Longueur_Parallelogramme.d
Largeur_Parallelogramme.d
Hauteur_Parallelogramme.d
Surface_Parallelogramme.d
Perimetre_Parallelogramme.d
EndStructure
Global.ObjetParallelogramme *Parallelogramme
Declare Ouvrir_fenetre_Parallelogramme()
Declare CreerParallelogramme(Id, Longueur_Parallelogramme.d, Largeur_Parallelogramme.d, Hauteur_Parallelogramme.d)
EndDeclareModule
;trapèze
DeclareModule Trapeze
Enumeration Fenetre
#Fenetre_Trapeze = 8
EndEnumeration
Enumeration Gadgets
#Str_Cote_1_Trapeze = 38
#Str_Cote_2_Trapeze
#Str_Cote_3_Trapeze
#Str_Cote_4_Trapeze
#Str_Longueur_Mediane_Trapeze
#Str_Hauteur_Trapeze
#Str_Surface_Trapeze
#Str_Perimetre_Trapeze
#Trapeze
EndEnumeration
Structure ObjetTrapeze
Id.i
Cote_1.d
Cote_2.d
Cote_3.d
Cote_4.d
Longueur_Mediane.d
Hauteur.d
Surface.d
Perimetre.d
EndStructure
Global.ObjetTrapeze *Trapeze
Declare CreerTrapeze(ID, Cote_1.d, Cote_2.d, Cote_3.d, Cote_4.d,Hauteur.d)
Declare Ouvrir_Fenetre_Trapeze()
EndDeclareModule
;triangle quelconque
DeclareModule Triangle
Enumeration Fenetre
#Fenetre_Triangle = 9
EndEnumeration
Enumeration Gadgets
#Str_CoteA_Triangle = 47
#Str_CoteB_Triangle
#Str_CoteC_Triangle
#Str_Hauteur_Triangle
#Str_Perimetre_Triangle
#Str_Surface_Triangle
#Str_AngleA_Triangle
#Str_AngleB_Triangle
#Str_AngleC_Triangle
EndEnumeration
Structure ObjetTriangle
ID.i
CoteA_Triangle.d
CoteB_Triangle.d
CoteC_Triangle.d
Hauteur_Triangle.d
Perimetre_Triangle.d
Surface_Triangle.d
AngleA_Triangle.d
AngleB_Triangle.d
AngleC_Triangle.d
EndStructure
Global.ObjetTriangle *Triangle
Declare Ouvrir_fenetre_Triangle()
Declare CreerTriangle(Id, CoteA.d, CoteB.d, CoteC.d)
EndDeclareModule
;polygone
DeclareModule Polygone
Enumeration Fenetre
#Fenetre_Polygone = 10
EndEnumeration
Enumeration Gadgets
#Txt_n = 57
#Txt_r
#Txt_c
#Txt_h
#Txt_f
#Txt_a_
#Txt_x
#Txt_l
#Txt_P
#Txt_Cc
#Txt_Ci
#Txt_A
#Txt_Ac
#Txt_Ai
#Str_n
#Str_r
#Str_c
#Str_h
#Str_f
#Str_a_
#Str_x
#Str_l
#Str_P
#Str_Cc
#Str_Ci
#Str_A
#Str_Ac
#Str_Ai
EndEnumeration
Structure ObjetPolygone
ID.i
NombreCotes.d
LongueurCote.d
RayonCirconscrit.d
RayonInscrit.d
AngleDeg.d
AngleRad.d
LngArc.d
Perimetre.d
CircCercleInscrit.d
Surface.d
SurfCercleCirconscrit.d
SurfCercleInscrit.d
EndStructure
Global.ObjetPolygone *Polygone
Declare Ouvrir_fenetre_Polygone()
Declare CreerPolygone(Id, NombreCotes.d, LongueurCote.d)
EndDeclareModule
;Partie publique
Enumeration Fenetres
#Fenetre_Geometrie
#Fenetre_Carre
#Fenetre_Cercle
#Fenetre_Rectangle
#Fenetre_Anneau
#Fenetre_TriangleR
#Fenetre_Losange
#Fenetre_Parallelogramme
#Fenetre_Trapeze
#Fenetre_Triangle
#Fenetre_Polygone
EndEnumeration
Enumeration Gadgets
#Str_cote_carre
#Str_Surface_carre
#Str_Diagonale_carre
#Str_perimetre_carre
#Carre
EndEnumeration
Enumeration Gadgets
#Str_perimetre_cercle = 5
#Str_Rayon_cercle
#Str_Surface_Cercle
#Str_Diametre_Cercle
#Cercle
EndEnumeration
Enumeration Gadgets
#Str_perimetre_Rectangle = 10
#Str_Largeur_Rectangle
#Str_Longueur_Rectangle
#Str_Surface_rectangle
#Str_Diagonale_rectangle
#Rectangle
EndEnumeration
Enumeration gadgets
#Str_DE = 16
#Str_DI
#Str_DIn
#Str_La
#Str_SU
#Anneau
EndEnumeration
Enumeration Gadgets
#Str_Base_TR = 22
#Str_Hauteur_TR
#Str_Hypothenuse_TR
#Str_Perimetre_TR
#Str_Surface_TR
#TriangleRectangle
EndEnumeration
Enumeration Gadgets
#Str_Cote_Losange = 28
#Str_Surface_Losange
#Str_Perimetre_Losange
#Losange
EndEnumeration
Enumeration gadgets
#Str_Longueur_Parallelogramme = 32
#Str_Largeur_Parallelogramme
#Str_Hauteur_Parallelogramme
#Str_Surface_Parallelogramme
#Str_Perimetre_Parallelogramme
#Parallelogramme
EndEnumeration
Enumeration Gadgets
#Str_Cote_1_Trapeze = 38
#Str_Cote_2_Trapeze
#Str_Cote_3_Trapeze
#Str_Cote_4_Trapeze
#Str_Longueur_Mediane_Trapeze
#Str_Hauteur_Trapeze
#Str_Surface_Trapeze
#Str_Perimetre_Trapeze
#Trapeze
EndEnumeration
Enumeration Gadgets
#Str_CoteA_Triangle = 47
#Str_CoteB_Triangle
#Str_CoteC_Triangle
#Str_Hauteur_Triangle
#Str_Perimetre_Triangle
#Str_Surface_Triangle
#Str_AngleA_Triangle
#Str_AngleB_Triangle
#Str_AngleC_Triangle
#Triangle
EndEnumeration
Enumeration Gadgets
#Txt_n = 57
#Txt_r
#Txt_c
#Txt_h
#Txt_f
#Txt_a_
#Txt_x
#Txt_l
#Txt_P
#Txt_Cc
#Txt_Ci
#Txt_A
#Txt_Ac
#Txt_Ai
#Str_n
#Str_r
#Str_c
#Str_h
#Str_f
#Str_a_
#Str_x
#Str_l
#Str_P
#Str_Cc
#Str_Ci
#Str_A
#Str_Ac
#Str_Ai
#Polygone
EndEnumeration
Enumeration Gadgets
#Btn_Carre = 57
#Btn_Cercle
#Btn_Anneau
#Btn_Rectangle
#Btn_TR
#Btn_Losange
#Btn_Parallelogramme
#Btn_Trapeze
#Btn_Triangle
#Btn_Polygone
EndEnumeration
Procedure Ouvrir_Fenetre_Geometrie()
OpenWindow(#Fenetre_Geometrie,380,100,470,410,"Choisissez une figure géométrique",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(#Btn_Carre,35,40,200,50,"Carré")
ButtonGadget(#Btn_Cercle,35,110,200,50,"Cercle")
ButtonGadget(#Btn_Rectangle,35,180,200,50,"Rectangle")
ButtonGadget(#Btn_Anneau,35,250,200,50,"Anneau")
ButtonGadget(#Btn_TR, 250,40,200,50,"Triangle Rectangle")
ButtonGadget(#Btn_Losange, 250, 110, 200, 50, "Losange")
ButtonGadget(#Btn_Parallelogramme, 250, 180, 200, 50,"Parallélogramme")
ButtonGadget(#Btn_Trapeze, 250, 250, 200, 50, "Trapèze")
ButtonGadget(#Btn_Triangle,35, 320, 200, 50, "Triangle quelconque")
ButtonGadget(#Btn_Polygone,250,320, 200, 50, "Polygone")
EndProcedure
Module Police
FontID1 = LoadFont(1,"Segoe UI",16,#PB_Font_Bold)
FontID2 = LoadFont(2,"Segoe UI",40,#PB_Font_Bold)
FontID3 = LoadFont(3,"Segoe UI",30,#PB_Font_Bold)
FontID4 = LoadFont(4,"Segoe UI",10,#PB_Font_Bold)
EndModule
Module Verification
Procedure checkFloatInput(gadget)
Protected start,count,pointcount,new$
SendMessage_(GadgetID(gadget),#EM_GETSEL,@start,0)
Protected txt$ = GetGadgetText(gadget)
Protected *p.Character = @txt$
While *p\c ; <> 0
If *p\c = '.'
pointcount+1
If pointcount < 2
new$ + Chr(*p\c)
Else
If start>count:start-1:EndIf
EndIf
ElseIf count = 0 And *p\c = '-'
new$ + Chr('-')
ElseIf *p\c >= '0' And *p\c <= '9'
new$ + Chr(*p\c)
Else
start - 1
EndIf
*p + SizeOf(Character)
count + 1
Wend
SetGadgetText(gadget,new$)
SendMessage_(GadgetID(gadget),#EM_SETSEL,start,start)
EndProcedure
EndModule
Module Carre
Procedure CreerCarre(ID, Co.d)
*Carre = AllocateMemory(SizeOf(objetCarre))
*Carre\Surface = Co * Co
*Carre\Perimetre = Co * 4
*Carre\Diagonale = Co * Sqr(2)
EndProcedure
Procedure Ouvrir_Fenetre_Carre()
If OpenWindow(#Fenetre_carre, 216, 0, 375, 399, "Calcul d'un carré", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar|#PB_Window_ScreenCentered )
StringGadget(#Str_cote_carre, 130, 120, 200, 40, "",#ES_RIGHT)
GadgetToolTip(#Str_cote_carre, "Veuillez entrer le côté du carré")
SetGadgetFont(#Str_cote_carre, Police::FontID1)
StringGadget(#Str_Surface_carre, 130, 180, 200, 40, "",#ES_RIGHT)
SetGadgetFont(#Str_Surface_carre, Police::FontID1)
StringGadget(#Str_Diagonale_carre, 130, 240, 200, 40, "",#ES_RIGHT)
SetGadgetFont(#Str_Diagonale_carre, Police::FontID1)
StringGadget(#Str_perimetre_carre, 130, 300, 200, 40, "",#ES_RIGHT)
SetGadgetFont(#Str_perimetre_carre, Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_Carre))
BackColor(Point(0, 0))
DrawingFont(Police::FontID2)
FrontColor(#Red)
DrawText(100, 30, "Carré")
DrawingFont(Police::FontID1)
FrontColor(#Black)
DrawText(20, 120, "Largeur :")
DrawText(20, 180, "Surface :")
DrawText(20, 240, "Diagonale :")
DrawText(20, 300, "Périmètre :")
StopDrawing()
EndIf
EndIf
SetActiveGadget(#Str_cote_carre)
EndProcedure
EndModule
Module Cercle
Procedure CreerCercle(ID, Rayon.d)
*Cercle = AllocateMemory(SizeOf(ObjetCercle))
*Cercle\Diametre = Rayon * 2
*Cercle\Perimetre = 2 * #PI * Rayon
*Cercle\Surface = #PI / 4 * Pow(*Cercle\Diametre, 2)
EndProcedure
Procedure Ouvrir_Fenetre_Cercle()
If OpenWindow(#Fenetre_Cercle, 216, 0, 375, 420, "Calcul d'un Cercle", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
StringGadget(#Str_Rayon_cercle, 130, 150, 200, 40, "",#ES_RIGHT)
GadgetToolTip(#Str_Rayon_cercle, "Veuillez entrer la Rayon du Cercle")
SetGadgetFont(#Str_Rayon_cercle, Police::FontID1)
StringGadget(#Str_Surface_Cercle, 130, 210, 200, 40, "",#ES_RIGHT)
SetGadgetFont(#Str_Surface_Cercle, Police::FontID1)
StringGadget(#Str_Diametre_Cercle, 130, 270, 200, 40, "",#ES_RIGHT)
SetGadgetFont(#Str_Diametre_Cercle, Police::FontID1)
StringGadget(#Str_perimetre_cercle, 130, 330, 200, 40, "",#ES_RIGHT)
SetGadgetFont(#Str_perimetre_cercle, Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_Cercle))
BackColor(Point(0, 0))
DrawingFont(Police::FontID2)
FrontColor(#Red)
DrawText(100, 30, "Cercle")
DrawingFont(Police::FontID1)
FrontColor(#Black)
DrawText(20, 150, "Rayon :")
DrawText(20, 210, "Surface :")
DrawText(20, 270, "Diamètre:")
DrawText(20, 330, "Périmètre :")
StopDrawing()
EndIf
SetActiveGadget(#Str_Rayon_cercle)
EndIf
EndProcedure
EndModule
Module Rectangle
Procedure CreerRectangle(Id, Longueur.d, Largeur.d)
*Rectangle = AllocateMemory(SizeOf(ObjetRectangle))
*Rectangle\Perimetre = (Longueur + Largeur) * 2
*Rectangle\Surface = Longueur * Largeur
*Rectangle\Diagonale = Sqr(Pow(Longueur, 2) + Pow(Largeur, 2))
EndProcedure
Procedure Ouvrir_Fenetre_Rectangle()
If OpenWindow(#Fenetre_Rectangle, 216, 0, 375, 420, "Calcul d'un rectangle", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
StringGadget(#Str_Longueur_Rectangle, 130, 120, 200, 40, "",#ES_RIGHT)
GadgetToolTip(#Str_Longueur_Rectangle, "Veuillez entrer la longueur du rectangle")
SetGadgetFont(#Str_Longueur_Rectangle,Police::FontID1)
StringGadget(#Str_Largeur_Rectangle,130,180,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Largeur_Rectangle,"Veuillez entrer la largeur du rectangle")
SetGadgetFont(#Str_Largeur_Rectangle, Police::FontID1)
StringGadget(#Str_Surface_rectangle, 130, 240, 200, 40, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Surface_rectangle, Police::FontID1)
StringGadget(#Str_Diagonale_rectangle, 130, 300, 200, 40, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Diagonale_rectangle, Police::FontID1)
StringGadget(#Str_perimetre_Rectangle, 130, 360, 200, 40, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_perimetre_Rectangle, Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_Rectangle))
BackColor(Point(0,0))
DrawingFont(Police::FontID2)
FrontColor(#Red)
DrawText(60, 30, "Rectangle")
DrawingFont(Police::FontID1)
FrontColor(#Black)
DrawText(20, 120, "Longueur :")
DrawText(20, 180, "Largeur :")
DrawText(20, 240, "Surface :")
DrawText(20, 300, "Diagonale :")
DrawText(20, 360, "Périmètre :")
StopDrawing()
EndIf
SetActiveGadget(#Str_Longueur_Rectangle)
EndIf
EndProcedure
EndModule
Module Anneau
Procedure CreerAnneau(ID,Di.d,De.d)
*Anneau = AllocateMemory(SizeOf(ObjetAnneau))
*Anneau\DiametreIntermediaire = (De+Di)/2
*Anneau\Largeur = De-Di
*Anneau\Surface = #PI * *Anneau\DiametreIntermediaire * *Anneau\Largeur
EndProcedure
Procedure Ouvrir_Fenetre_Anneau()
If OpenWindow(#Fenetre_Anneau,0,0,400,420,"Calcul d'un anneau",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
StringGadget(#Str_DE,250,120,100,40,"",#ES_RIGHT)
StringGadget(#Str_DI,250,180,100,40,"",#ES_RIGHT)
StringGadget(#Str_DIn,250,240,100,40,"",#PB_String_ReadOnly|#ES_RIGHT)
StringGadget(#Str_La,250,300,100,40,"",#PB_String_ReadOnly|#ES_RIGHT)
StringGadget(#Str_SU,250,360,100,40,"",#PB_String_ReadOnly|#ES_RIGHT)
For i = #Str_DE To #Str_SU
SetGadgetFont(i, Police::FontID1)
Next
If StartDrawing(WindowOutput(#Fenetre_Anneau))
BackColor(Point(0,0))
DrawingFont(Police::FontID2)
FrontColor(#Red)
DrawText(100,30,"Anneau")
DrawingFont(Police::FontID1)
FrontColor(#Black)
DrawText(5,120,"Diamètre externe :")
DrawText(5,180,"Diamètre interne :")
DrawText(5,240,"Diamètre intermédiaire :")
DrawText(5,300,"Epaisseur :")
DrawText(5,360,"Surface :")
StopDrawing()
EndIf
SetActiveGadget(#Str_DE)
EndIf
EndProcedure
EndModule
Module TriangleRectangle
Procedure CreerTriangleRectangle(Id, Base.d, Hauteur.d)
*TriangleRectangle = AllocateMemory(SizeOf(ObjetTriangleRectangle))
*TriangleRectangle\Surface = (Base * Hauteur) / 2
*TriangleRectangle\Hypothenuse = Sqr(Pow(Base, 2) + Pow(Hauteur, 2))
*TriangleRectangle\Perimetre = Base + Hauteur + *TriangleRectangle\Hypothenuse
EndProcedure
Procedure Ouvrir_Fenetre_TriangleRectangle()
If OpenWindow(#Fenetre_TriangleR,216,0,400,420,"Calcul d'un triangle rectangle",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
StringGadget(#Str_Base_TR,170,120,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Base_TR,"Veuillez entrer la base")
SetGadgetFont(#Str_Base_TR,Police::FontID1)
StringGadget(#Str_Hauteur_TR,170,180,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Hauteur_TR,"Veuillez entrer la hauteur")
SetGadgetFont(#Str_Hauteur_TR,Police::FontID1)
StringGadget(#Str_Hypothenuse_TR,170,240,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Hypothenuse_TR,Police::FontID1)
StringGadget(#Str_Surface_TR,170,300,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Surface_TR,Police::FontID1)
StringGadget(#Str_Perimetre_TR,170,360,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Perimetre_TR,Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_TriangleR))
BackColor(Point(0,0))
DrawingFont(Police::FontID3)
FrontColor(#Red)
DrawText(20,30,"Triangle Rectangle")
DrawingFont(Police::FontID1)
FrontColor(#Black)
DrawText(20,120,"Longueur :")
DrawText(20,180,"Largeur :")
DrawText(20,240,"Hypothénuse :")
DrawText(20,300,"Surface :")
DrawText(20,360,"Périmètre :")
StopDrawing()
EndIf
SetActiveGadget(#Str_Base_TR)
EndIf
EndProcedure
EndModule
Module Losange
Procedure CreerLosange(ID, Cote_Losange.d)
*Losange = AllocateMemory(SizeOf(ObjetLosange))
*Losange\Perimetre_Losange = Cote_Losange * 4
*Losange\Surface_Losange = Cote_Losange * Cote_Losange
EndProcedure
Procedure Ouvrir_Fenetre_Losange()
If OpenWindow(#Fenetre_Losange,216,0,400,420,"Calcul d'un losange",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
StringGadget(#Str_Cote_Losange,170,120,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Cote_Losange,"Veuillez entrer la longueur du côté")
SetGadgetFont(#Str_Cote_Losange,Police::FontID1)
StringGadget(#Str_Surface_Losange,170,240,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Surface_Losange,Police::FontID1)
StringGadget(#Str_Perimetre_Losange,170,360,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Perimetre_Losange,Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_Losange))
BackColor(Point(0,0))
DrawingFont(Police::FontID2)
FrontColor(#Red)
DrawText(60,30,"Losange")
DrawingFont(Police::FontID1)
FrontColor(#Black)
DrawText(20,120,"Côté :")
DrawText(20,240,"Surface :")
DrawText(20,360,"Périmètre :")
StopDrawing()
EndIf
SetActiveGadget(#Str_Cote_Losange)
EndIf
EndProcedure
EndModule
Module Parallelogramme
Procedure CreerParallelogramme(Id, Longueur_Parallelogramme.d, Largeur_Parallelogramme.d, Hauteur_Parallelogramme.d)
*Parallelogramme = AllocateMemory(SizeOf(ObjetParallelogramme))
*Parallelogramme\Perimetre_Parallelogramme = (2 * Longueur_Parallelogramme) + (2 * Largeur_Parallelogramme)
*Parallelogramme\Surface_Parallelogramme = Longueur_Parallelogramme * Hauteur_Parallelogramme
EndProcedure
Procedure Ouvrir_fenetre_Parallelogramme()
If OpenWindow(#Fenetre_Parallelogramme,216,0,375,420,"Calcul d'un parallélogramme",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
StringGadget(#Str_Longueur_Parallelogramme,130,120,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Longueur_Parallelogramme,"Veuillez entrer la longueur du parallélogramme")
SetGadgetFont(#Str_Longueur_Parallelogramme,Police::FontID1)
StringGadget(#Str_Largeur_Parallelogramme,130,180,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Largeur_Parallelogramme,"Veuillez entrer la largeur du parallélogramme")
SetGadgetFont(#Str_Largeur_Parallelogramme,Police::FontID1)
StringGadget(#Str_Hauteur_Parallelogramme,130,240,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Hauteur_Parallelogramme,"Veuillez entrer la hauteur du parallélogramme")
SetGadgetFont(#Str_Hauteur_Parallelogramme,Police::FontID1)
StringGadget(#Str_Surface_Parallelogramme,130,300,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Surface_Parallelogramme,Police::FontID1)
StringGadget(#Str_Perimetre_Parallelogramme,130,360,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Perimetre_Parallelogramme,Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_Parallelogramme))
BackColor(Point(0,0))
DrawingFont(Police::FontID1)
FrontColor(#Red)
DrawText(100,30,"Parallélogramme")
FrontColor(#Black)
DrawText(20,120,"Longueur :")
DrawText(20,180,"Largeur :")
DrawText(20,240,"Hauteur :")
DrawText(20,300,"Surface :")
DrawText(20,360,"Périmètre :")
StopDrawing()
EndIf
SetActiveGadget(#Str_Longueur_Parallelogramme)
EndIf
EndProcedure
EndModule
Module Trapeze
Procedure CreerTrapeze(ID, Cote_1.d, Cote_2.d, Cote_3.d, Cote_4.d, Hauteur.d)
*Trapeze = AllocateMemory(SizeOf(ObjetTrapeze))
*Trapeze\Surface = (Cote_1 + Cote_3) / (2 * Hauteur)
*Trapeze\Longueur_Mediane = (Cote_1 + Cote_3) / 2
*Trapeze\Perimetre = Cote_1 + Cote_2 + Cote_3 + Cote_4
EndProcedure
Procedure Ouvrir_Fenetre_Trapeze()
If OpenWindow(#Fenetre_Trapeze,216,0,375,600,"Calcul d'un trapèze",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
StringGadget(#Str_Cote_1_Trapeze,130,120,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Cote_1_Trapeze,"Veuillez entrer le côté 1")
SetGadgetFont(#Str_Cote_1_Trapeze,Police::FontID1)
StringGadget(#Str_Cote_2_Trapeze,130,180,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Cote_2_Trapeze,"Veuillez entrer le côté 2")
SetGadgetFont(#Str_Cote_2_Trapeze,Police::FontID1)
StringGadget(#Str_Cote_3_Trapeze,130,240,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Cote_3_Trapeze,"Veuillez entrer le côté 3")
SetGadgetFont(#Str_Cote_3_Trapeze,Police::FontID1)
StringGadget(#Str_Cote_4_Trapeze,130,300,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Cote_4_Trapeze,"Veuillez entrer le côté 4")
SetGadgetFont(#Str_Cote_4_Trapeze,Police::FontID1)
StringGadget(#Str_Hauteur_Trapeze,130,360,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_Hauteur_Trapeze,"Veuillez entrer la hauteur")
SetGadgetFont(#Str_Hauteur_Trapeze,Police::FontID1)
StringGadget(#Str_Longueur_Mediane_Trapeze,130,420,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Longueur_Mediane_Trapeze,Police::FontID1)
StringGadget(#Str_Surface_Trapeze,130,480,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Surface_Trapeze,Police::FontID1)
StringGadget(#Str_Perimetre_Trapeze,130,540,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Perimetre_Trapeze,Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_Trapeze))
BackColor(Point(0,0))
DrawingFont(Police::FontID2)
FrontColor(#Red)
DrawText(80,30,"Trapèze")
DrawingFont(Police::FontID1)
FrontColor(#Black)
DrawText(20,120,"Côté 1 :")
DrawText(20,180,"Côté 2 :")
DrawText(20,240,"Côté 3 :")
DrawText(20,300,"Côté 4 :")
DrawText(20,360,"Hauteur :")
DrawText(20,420,"Médiane :")
DrawText(20,480,"Surface :")
DrawText(20,540,"Périmètre")
StopDrawing()
EndIf
SetActiveGadget(#Str_Cote_1_Trapeze)
EndIf
EndProcedure
EndModule
Module Triangle
Procedure CreerTriangle(Id, CoteA.d, CoteB.d, CoteC.d)
Protected s = (CoteA + CoteB + CoteC) /2
*Triangle = AllocateMemory(SizeOf(ObjetTriangle))
*Triangle\Surface_Triangle = Sqr(s*(s-CoteC)*(s-CoteA)*(s-CoteB))
*Triangle\Hauteur_Triangle = (2 * *Triangle\Surface_Triangle) / CoteC
*Triangle\Perimetre_Triangle = CoteA + CoteB + CoteC
*Triangle\AngleA_Triangle = Degree(ACos((Pow(CoteB, 2) + Pow(CoteC, 2) - Pow(CoteA, 2)) / (2 * CoteB * CoteC)))
*Triangle\AngleC_Triangle = Degree(ACos((Pow(CoteA, 2) + Pow(CoteC, 2) - Pow(CoteB, 2)) / (2 * CoteA * CoteC)))
*Triangle\AngleB_Triangle = Degree(ACos((Pow(CoteA, 2) + Pow(CoteB, 2) - Pow(CoteC, 2)) / (2 * CoteA * CoteB)))
EndProcedure
Procedure Ouvrir_Fenetre_Triangle()
If OpenWindow(#Fenetre_Triangle,216,0,410,660,"Calcul d'un triangle quelconque",#PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
StringGadget(#Str_CoteA_Triangle,170,120,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_CoteA_Triangle,"Veuillez entrer le côté A")
SetGadgetFont(#Str_CoteA_Triangle,Police::FontID1)
StringGadget(#Str_CoteB_Triangle,170,180,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_CoteB_Triangle,"Veuillez entrer le côté B")
SetGadgetFont(#Str_CoteB_Triangle,Police::FontID1)
StringGadget(#Str_CoteC_Triangle,170,240,200,40,"",#ES_RIGHT)
GadgetToolTip(#Str_CoteC_Triangle,"Veuillez entrer le côté C")
SetGadgetFont(#Str_CoteC_Triangle,Police::FontID1)
StringGadget(#Str_Hauteur_Triangle,170,300,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Hauteur_Triangle,Police::FontID1)
StringGadget(#Str_Surface_Triangle,170,360,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Surface_Triangle,Police::FontID1)
StringGadget(#Str_Perimetre_Triangle,170,420,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Perimetre_Triangle,Police::FontID1)
StringGadget(#Str_AngleA_Triangle,170,480,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_AngleA_Triangle,Police::FontID1)
StringGadget(#Str_AngleB_Triangle,170,540,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_AngleB_Triangle,Police::FontID1)
StringGadget(#Str_AngleC_Triangle,170,600,200,40,"",#PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_AngleC_Triangle,Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_Triangle))
BackColor(Point(0,0))
DrawingFont(Police::FontID3)
FrontColor(#Red)
DrawText(10,30,"Triangle quelconque")
DrawingFont(Police::FontID1)
FrontColor(#Black)
DrawText(20,120,"Côté A :")
DrawText(20,180,"Coté B :")
DrawText(20,240,"Côté C :")
DrawText(20,300,"Hauteur :")
DrawText(20,360,"Surface :")
DrawText(20,420,"Périmètre :")
DrawText(20,480,"Angle A :")
DrawText(20,540,"Angle B :")
DrawText(20,600,"Angle C :")
StopDrawing()
EndIf
SetActiveGadget(#Str_CoteA_Triangle)
EndIf
EndProcedure
EndModule
Module Polygone
Procedure CreerPolygone(Id, NombreCotes.d, LongueurCote.d)
Global acd.d, acr.d, rcc.d, rci.d, la.d, ci.d, s.d, ac.d, ai.d
;Tentative d'allouer de la mémoire pour un modèle de nouvelle classe.
*Polygone = AllocateMemory(SizeOf(ObjetPolygone))
If *Polygone
;Initialiser la longueur et la largeur.
*Polygone\NombreCotes = NombreCotes
*Polygone\LongueurCote = LongueurCote
If *Polygone\NombreCotes > 0.0
acd = 360 / NombreCotes
*Polygone\AngleDeg = acd
acr = Radian(*Polygone\AngleDeg)
*Polygone\AngleRad = acr
rcc = Sin(*Polygone\AngleRad / 2)
*Polygone\RayonCirconscrit = rcc
rci = *Polygone\RayonCirconscrit * Cos(#PI / NombreCotes)
*Polygone\RayonInscrit = rci
la = *Polygone\RayonCirconscrit * *Polygone\AngleRad
*Polygone\LngArc = la
*Polygone\Perimetre = *Polygone\NombreCotes * *Polygone\LongueurCote
ci = 2 * #PI + *Polygone\RayonInscrit
*Polygone\CircCercleInscrit = ci
s = *Polygone\NombreCotes * *Polygone\RayonInscrit * *Polygone\LongueurCote / 2
*Polygone\Surface = s
ac = #PI * Pow(*Polygone\RayonCirconscrit, 2)
*Polygone\SurfCercleCirconscrit = ac
ai = #PI * Pow(*Polygone\RayonInscrit, 2)
*Polygone\SurfCercleInscrit = ai
;Retourne un pointeur à notre objet.
ProcedureReturn *Polygone
EndIf
EndIf
EndProcedure
Procedure Ouvrir_fenetre_Polygone()
If OpenWindow(#Fenetre_Polygone, 454, 26, 500, 410, "Calcul d'un polygone régulier", #PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_ScreenCentered)
StringGadget(#Str_n, 250, 48, 245, 30, "", #ES_RIGHT)
GadgetToolTip(#Str_n, "Veuillez entrer le nombre de côtés")
SetGadgetFont(#Str_n,Police::FontID1)
StringGadget(#Str_c, 250, 78, 245, 30, "", #ES_RIGHT)
GadgetToolTip(#Str_c, "Veuillez entrer la longueur des côtés")
SetGadgetFont(#Str_c,Police::FontID1)
StringGadget(#Str_r, 250, 108, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_r,Police::FontID1)
StringGadget(#Str_h, 250, 138, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_h,Police::FontID1)
StringGadget(#Str_a_, 250, 168, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_a_,Police::FontID1)
StringGadget(#Str_x, 250, 198, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_x,Police::FontID1)
StringGadget(#Str_l, 250, 228, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_l,Police::FontID1)
StringGadget(#Str_P, 250, 258, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_p,Police::FontID1)
StringGadget(#Str_Ci, 250, 288, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Ci,Police::FontID1)
StringGadget(#Str_A, 250, 318, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_A,Police::FontID1)
StringGadget(#Str_Ac, 250, 348, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Ac,Police::FontID1)
StringGadget(#Str_Ai, 250, 378, 245, 30, "", #PB_String_ReadOnly|#ES_RIGHT)
SetGadgetFont(#Str_Ai,Police::FontID1)
If StartDrawing(WindowOutput(#Fenetre_Polygone))
BackColor(Point(0,0))
DrawingFont(Police::FontID3)
FrontColor(#Red)
DrawText(70,-10,"Polygone régulier")
DrawingFont(Police::FontID4)
FrontColor(#Black)
DrawText(0, 50, "Nombre de côtés")
DrawText(0, 80, "Longueur du côté")
DrawText(0, 110, "Rayon du cercle circonscrit")
DrawText(0, 140, "Apothème, rayon du cercle inscrit")
DrawText(0, 170, "Angle au centre en degrés")
DrawText(0, 200, "Angle au centre en radians")
DrawText(0, 230, "Longueur de l'arc")
DrawText(0, 260, "Périmètre")
DrawText(0, 290, "Circonférence du cercle inscrit")
DrawText(0, 320, "Surface")
DrawText(0, 350, "Surface du cercle circonscrit")
DrawText(0, 380, "Surface du cercle inscrit")
StopDrawing()
EndIf
SetActiveGadget(#Str_n)
EndIf
EndProcedure
EndModule
Ouvrir_Fenetre_Geometrie()
Define.i Evenement, EvenementFenetre, EvenementGadget, TypeEvenement
Repeat
Evenement = WaitWindowEvent()
TypeEvenement = EventType()
Select Evenement
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Case #PB_Event_Gadget
EvenementGadget = EventGadget()
Select EvenementGadget
Case #Btn_Carre
Carre::Ouvrir_Fenetre_Carre()
Case #Btn_Cercle
Cercle::Ouvrir_Fenetre_Cercle()
Case #Btn_Rectangle
Rectangle::Ouvrir_Fenetre_Rectangle()
Case #Btn_Anneau
Anneau::Ouvrir_Fenetre_Anneau()
Case #Btn_TR
TriangleRectangle::Ouvrir_Fenetre_TriangleRectangle()
Case #Btn_Losange
Losange::Ouvrir_Fenetre_Losange()
Case #Btn_Parallelogramme
Parallelogramme::Ouvrir_fenetre_Parallelogramme()
Case #Btn_Trapeze
Trapeze::Ouvrir_Fenetre_Trapeze()
Case #Btn_Triangle
Triangle::Ouvrir_fenetre_Triangle()
Case #Btn_Polygone
Polygone::Ouvrir_fenetre_Polygone()
;carré
Case #Str_cote_carre
If Val(GetGadgetText(#Str_cote_carre)) >= 0
Carre::CreerCarre(#Carre,ValD(GetGadgetText(#Str_cote_carre)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(#Str_cote_carre)) <> 0.0
SetGadgetText(#Str_perimetre_carre, StrD(Carre::*Carre\Perimetre))
SetGadgetText(#Str_Surface_carre, StrD(Carre::*Carre\Surface))
SetGadgetText(#Str_Diagonale_carre, StrD(Carre::*Carre\Diagonale))
EndIf
EndIf
;cercle
Case #Str_Rayon_cercle
If Val(GetGadgetText(#Str_Rayon_cercle)) >= 0
Cercle::CreerCercle(#Cercle,ValD(GetGadgetText(#Str_Rayon_cercle)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(#Str_Rayon_cercle)) <> 0.0
SetGadgetText(#Str_Surface_Cercle,StrD(Cercle::*Cercle\Surface))
SetGadgetText(#Str_Diametre_Cercle, StrD(Cercle::*Cercle\Diametre))
SetGadgetText(#Str_perimetre_cercle, StrD(Cercle::*Cercle\Perimetre))
EndIf
EndIf
;rectangle
Case #Str_Largeur_Rectangle, #Str_Longueur_Rectangle
If Val(GetGadgetText(#Str_Largeur_Rectangle)) >= 0 And Val(GetGadgetText(#Str_Longueur_Rectangle)) >= 0
Rectangle::CreerRectangle(#Rectangle, ValD(GetGadgetText(#Str_Longueur_Rectangle)),
ValD(GetGadgetText(#Str_Largeur_Rectangle)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(#Str_Largeur_Rectangle)) <> 0.0 And ValD(GetGadgetText(#Str_Longueur_Rectangle)) <> 0.0
SetGadgetText(#Str_Surface_rectangle, StrD(Rectangle::*Rectangle\Surface))
SetGadgetText(#Str_Diagonale_rectangle, StrD(Rectangle::*Rectangle\Diagonale))
SetGadgetText(#Str_perimetre_Rectangle, StrD(Rectangle::*Rectangle\Perimetre))
EndIf
EndIf
;anneau
Case Anneau::#Str_DE,Anneau::#Str_DI
If Val(GetGadgetText(Anneau::#Str_DE)) >= 0 And Val(GetGadgetText(Anneau::#Str_DI)) >= 0
Anneau::CreerAnneau(#Anneau,ValD(GetGadgetText(Anneau::#Str_DI)),ValD(GetGadgetText(Anneau::#Str_DE)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(Anneau::#Str_DE)) <> 0.0 And ValD(GetGadgetText(Anneau::#Str_DI)) <> 0.0
SetGadgetText(Anneau::#Str_DIn,StrD(Anneau::*Anneau\DiametreIntermediaire))
SetGadgetText(Anneau::#Str_La,StrD(Anneau::*Anneau\Largeur))
SetGadgetText(Anneau::#Str_SU, StrD(Anneau::*Anneau\Surface))
EndIf
EndIf
;triangle rectangle
Case #Str_Base_TR, #Str_Hauteur_TR
If Val(GetGadgetText(#Str_Base_TR)) >= 0 And Val(GetGadgetText(#Str_Hauteur_TR)) >= 0
TriangleRectangle::CreerTriangleRectangle(#TriangleRectangle, ValD(GetGadgetText(#Str_Base_TR)),
ValD(GetGadgetText(#Str_Hauteur_TR)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(#Str_Base_TR)) <> 0.0 And ValD(GetGadgetText(#Str_Hauteur_TR)) <> 0.0
SetGadgetText(#Str_Hypothenuse_TR, StrD(TriangleRectangle::*TriangleRectangle\Hypothenuse))
SetGadgetText(#Str_Surface_TR, StrD(TriangleRectangle::*TriangleRectangle\Surface))
SetGadgetText(#Str_Perimetre_TR, StrD(TriangleRectangle::*TriangleRectangle\Perimetre))
EndIf
EndIf
;losange
Case #Str_Cote_Losange
If Val(GetGadgetText(#Str_Cote_Losange)) >= 0
Losange::CreerLosange(#Losange,ValD(GetGadgetText(#Str_Cote_Losange)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(#Str_Cote_Losange)) <> 0.0
SetGadgetText(#Str_Perimetre_Losange, StrD(Losange::*Losange\Perimetre_Losange))
SetGadgetText(#Str_Surface_Losange, StrD(Losange::*Losange\Surface_Losange))
EndIf
EndIf
;parallelogramme
Case #Str_Longueur_Parallelogramme,#Str_Largeur_Parallelogramme,#Str_Hauteur_Parallelogramme
If Val(GetGadgetText(#Str_Longueur_Parallelogramme)) >= 0 And
Val(GetGadgetText(#Str_Largeur_Parallelogramme)) >= 0 And
Val(GetGadgetText(#Str_Hauteur_Parallelogramme)) >= 0
Parallelogramme::CreerParallelogramme(#Parallelogramme, ValD(GetGadgetText(#Str_Longueur_Parallelogramme)),
ValD(GetGadgetText(#Str_Largeur_Parallelogramme)),
ValD(GetGadgetText(#Str_Hauteur_Parallelogramme)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(#Str_Longueur_Parallelogramme)) <> 0.0 And
ValD(GetGadgetText(#Str_Largeur_Parallelogramme)) <> 0.0 And
ValD(GetGadgetText(#Str_Hauteur_Parallelogramme)) <> 0.0
SetGadgetText(#Str_Perimetre_Parallelogramme, StrD(Parallelogramme::*Parallelogramme\Perimetre_Parallelogramme))
SetGadgetText(#Str_Surface_Parallelogramme, StrD(Parallelogramme::*Parallelogramme\Surface_Parallelogramme))
EndIf
EndIf
;trapèze
Case #Str_Cote_1_Trapeze, #Str_Cote_2_Trapeze, #Str_Cote_3_Trapeze, #Str_Cote_4_Trapeze, #Str_Hauteur_Trapeze
If Val(GetGadgetText(#Str_Cote_1_Trapeze)) >= 0 And
Val(GetGadgetText(#Str_Cote_2_Trapeze)) >= 0 And
Val(GetGadgetText(#Str_Cote_3_Trapeze)) >= 0 And
Val(GetGadgetText(#Str_Cote_4_Trapeze)) >= 0 And
Val(GetGadgetText(#Str_Hauteur_Trapeze)) >= 0
Trapeze::CreerTrapeze(#Trapeze,ValD(GetGadgetText(#Str_Cote_1_Trapeze)),
ValD(GetGadgetText(#Str_Cote_2_Trapeze)),
ValD(GetGadgetText(#Str_Cote_3_Trapeze)),
ValD(GetGadgetText(#Str_Cote_4_Trapeze)),
ValD(GetGadgetText(#Str_Hauteur_Trapeze)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(#Str_Cote_1_Trapeze)) <> 0.0 And
ValD(GetGadgetText(#Str_Cote_2_Trapeze)) <> 0.0 And
ValD(GetGadgetText(#Str_Cote_3_Trapeze)) <> 0.0 And
ValD(GetGadgetText(#Str_Cote_4_Trapeze)) <> 0.0 And
ValD(GetGadgetText(#Str_Hauteur_Trapeze)) <> 0.0
SetGadgetText(#Str_Longueur_Mediane_Trapeze, StrD(Trapeze::*Trapeze\Longueur_Mediane))
SetGadgetText(#Str_Perimetre_Trapeze, StrD(Trapeze::*Trapeze\Perimetre))
SetGadgetText(#Str_Surface_Trapeze, StrD(Trapeze::*Trapeze\Surface))
EndIf
EndIf
;triangle
Case #Str_CoteA_Triangle, #Str_CoteB_Triangle, #Str_CoteC_Triangle
If Val(GetGadgetText(#Str_CoteA_Triangle)) >= 0 And
Val(GetGadgetText(#Str_CoteB_Triangle)) >= 0 And
Val(GetGadgetText(#Str_CoteC_Triangle)) >= 0
Triangle::CreerTriangle(#Triangle, ValD(GetGadgetText(#Str_CoteA_Triangle)),
ValD(GetGadgetText(#Str_CoteB_Triangle)),
ValD(GetGadgetText(#Str_CoteC_Triangle)))
Verification::checkFloatInput(EventGadget())
If ValD(GetGadgetText(#Str_CoteA_Triangle)) <> 0.0 And
ValD(GetGadgetText(#Str_CoteB_Triangle)) <> 0.0 And
ValD(GetGadgetText(#Str_CoteC_Triangle))
SetGadgetText(#Str_Hauteur_Triangle, StrD(Triangle::*Triangle\Hauteur_Triangle))
SetGadgetText(#Str_Perimetre_Triangle, StrD(Triangle::*Triangle\Perimetre_Triangle))
SetGadgetText(#Str_Surface_Triangle, StrD(Triangle::*Triangle\Surface_Triangle))
SetGadgetText(#Str_AngleA_Triangle, StrD(Triangle::*Triangle\AngleA_Triangle))
SetGadgetText(#Str_AngleB_Triangle, StrD(Triangle::*Triangle\AngleB_Triangle))
SetGadgetText(#Str_AngleC_Triangle, StrD(Triangle::*Triangle\AngleC_Triangle))
EndIf
EndIf
;Polygone
Case #Str_n, #Str_c
Polygone::CreerPolygone(#Polygone, ValD(GetGadgetText(#Str_n)), ValD(GetGadgetText(#Str_c)))
Verification::checkFloatInput(EventGadget())
If ValF(GetGadgetText(#Str_n)) > 2 And ValF(GetGadgetText(#Str_c)) > 0
SetGadgetText(#Str_r, StrD(Polygone::*Polygone\RayonCirconscrit))
SetGadgetText(#str_h, StrD(Polygone::*Polygone\RayonInscrit))
SetGadgetText(#Str_a_, StrD(Polygone::*Polygone\AngleDeg))
SetGadgetText(#Str_x, StrD(Polygone::*Polygone\AngleRad))
SetGadgetText(#Str_l, StrD(Polygone::*Polygone\LngArc))
SetGadgetText(#str_P, StrD(Polygone::*Polygone\Perimetre))
SetGadgetText(#Str_Ci, StrD(Polygone::*Polygone\RayonInscrit))
SetGadgetText(#Str_A, StrD(Polygone::*Polygone\Surface))
SetGadgetText(#Str_Ac, StrD(Polygone::*Polygone\SurfCercleCirconscrit))
SetGadgetText(#Str_Ai, StrD(Polygone::*Polygone\SurfCercleInscrit))
EndIf
EndSelect ; Fin EvenementGadget
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Case #PB_Event_CloseWindow
EvenementFenetre = EventWindow()
Select EvenementFenetre
Case #Fenetre_Geometrie
CloseWindow(#Fenetre_Geometrie)
Break
Case #Fenetre_Carre
CloseWindow(#Fenetre_Carre)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_Cercle
CloseWindow(#Fenetre_Cercle)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_Rectangle
CloseWindow(#Fenetre_Rectangle)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_Anneau
CloseWindow(#Fenetre_Anneau)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_TriangleR
CloseWindow(#Fenetre_TriangleR)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_Losange
CloseWindow(#Fenetre_Losange)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_Parallelogramme
CloseWindow(#Fenetre_Parallelogramme)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_Trapeze
CloseWindow(#Fenetre_Trapeze)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_Triangle
CloseWindow(#Fenetre_Triangle)
Ouvrir_Fenetre_Geometrie()
Case #Fenetre_Polygone
CloseWindow(#Fenetre_Polygone)
Ouvrir_Fenetre_Geometrie()
EndSelect
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EndSelect
ForEver
End