Code : Tout sélectionner
;Module géométrie
EnableExplicit
DeclareModule Police
Global FontID1
Global FontID2
Global FontID3
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
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
;Partie publique
Enumeration Fenetres
#Fenetre_Geometrie
#Fenetre_Carre
#Fenetre_Cercle
#Fenetre_Rectangle
#Fenetre_Anneau
#Fenetre_TriangleR
#Fenetre_Losange
#Fenetre_Parallelogramme
#Fenetre_Trapeze
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
#Btn_Carre = 47
#Btn_Cercle
#Btn_Anneau
#Btn_Rectangle
#Btn_TR
#Btn_Losange
#Btn_Parallelogramme
#Btn_Trapeze
EndEnumeration
Procedure Ouvrir_Fenetre_Geometrie()
OpenWindow(#Fenetre_Geometrie,380,100,470,341,"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")
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)
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
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, "Calcule 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 :")
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 :")
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 :")
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,"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 :")
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 :")
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 :")
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 :")
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")
EndIf
SetActiveGadget(#Str_Cote_1_Trapeze)
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
StopDrawing()
Carre::Ouvrir_Fenetre_Carre()
Case #Btn_Cercle
StopDrawing()
Cercle::Ouvrir_Fenetre_Cercle()
Case #Btn_Rectangle
StopDrawing()
Rectangle::Ouvrir_Fenetre_Rectangle()
Case #Btn_Anneau
StopDrawing()
Anneau::Ouvrir_Fenetre_Anneau()
Case #Btn_TR
StopDrawing()
TriangleRectangle::Ouvrir_Fenetre_TriangleRectangle()
Case #Btn_Losange
StopDrawing()
Losange::Ouvrir_Fenetre_Losange()
Case #Btn_Parallelogramme
StopDrawing()
Parallelogramme::Ouvrir_fenetre_Parallelogramme()
Case #Btn_Trapeze
StopDrawing()
Trapeze::Ouvrir_Fenetre_Trapeze()
;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
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()
EndSelect
; +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EndSelect
ForEver
End