j'ai commencé pour modifier mon petit code , mais j'ai une erreur a la page 79 variable déjà déclarée BC l'hypotenuse il faut pourtant prendre BC pour faire le calcul du perimetre du triangle ,amoins de mettre une autre variable ?
Code : Tout sélectionner
Enumeration Window
#MaFenetre
EndEnumeration
Enumeration Gadget
#Longueur
#Largeur
#Surface
#Hypotenuse
#Perimetre
#Bouton_Calculer ; *** Déclarer l'ID du bouton Calculer
EndEnumeration
;Création de la fenetre et des différents gadgets
Procedure Open_MainForm()
OpenWindow(#MaFenetre, 100, 100, 800, 600, " -Elements d'un triangle rectangle- ")
TextGadget(#PB_Any, 10, 35, 100, 22, "Longueur")
StringGadget(#Longueur, 120, 30, 80, 22, "")
TextGadget(#PB_Any, 10, 65, 100, 22, "Largeur")
StringGadget(#Largeur, 120, 60, 80, 22, "")
TextGadget(#PB_Any, 10, 100, 100, 22, "Surface")
StringGadget(#Surface, 120, 100, 80, 22, "", #PB_String_ReadOnly) ;Ce gadget sera en lecture seule
TextGadget(#PB_Any, 10, 135, 100, 22, "Hypotenuse")
StringGadget(#Hypotenuse, 120, 135, 80, 22, "", #PB_String_ReadOnly) ;Ce gadget sera en lecture seule
TextGadget(#PB_Any, 10, 170, 100, 22, "Perimetre")
StringGadget(#Perimetre, 120, 170, 80, 22, "", #PB_String_ReadOnly) ;Ce gadget sera en lecture seule
ButtonGadget(#Bouton_Calculer, 10, 220, 100, 25, "Calculer") ; *** Le bouton Calculer
EndProcedure
;Calcul de la surface d'un triangle rectangle
Procedure CalculSurface(Longueur.f, largeur.f)
Protected AB.f = longueur
Protected AC.f = largeur
Protected Resultat.f
Resultat = (AB * AC)/2 ;Inutile de repeter le typage .f (float) à résultat car déja déclaré
SetGadgetText(#Surface, StrF(Resultat, 3)) ;Affichage du résultat avec 3 décimales
EndProcedure
; calcul de l'ypotenuse
;********************avoir si ok ****************************************
Procedure Calculhypetenuse(Longueur.f, Largeur.f)
Protected AB.f = longueur
Protected AC.f = largeur
Protected Resultat.f
Protected BC.f ;C'est la longueur de l'hypotenuse à retrouver
Resultat = Pow(AB,2) + Pow(AC,2) ; puissances 2
BC = Sqr(Resultat) ; racine carree
SetGadgettext(#Hypotenuse,Strf(BC,3)) ;affichage du resultat avec 3 decimales
EndProcedure
;**************************************************************
; calcul du perimetre du triangle
;********************avoir si ok ****************************************
Procedure Calculperimetre(Longueur.f, Largeur.f,BC.f)
Protected AB.f = longueur
Protected AC.f = largeur
Protected BC.f = hypotenuse
Protected Resultat.f
Resultat = AB + AC + BC
SetGadgettext(#perimetre,Strf(Resultat,3)) ;affichage du resultat avec 3 decimales
EndProcedure
;**************************************************************
;Le programme commence ici : On ouvre la fenêtre
Open_MainForm()
;Boucle événementielle
Repeat
Select WaitWindowEvent() ;Un événement est arrivé
Case #PB_Event_Gadget ;Est ce un gadget qui a provoqué l'événement ?
Select EventGadget() ;Apparemment oui : On cherche qui
; *** Je désactive ici le déclenchement automatique sur changement de valeur d'un des deux champs
; ;Le gadget #Longueur et #largeur faisant appel à la meme procédure, on va simplifier le code.
; Case #Longueur, #Largeur ;Apparemment c'est le gadget #Longueur ou #largeur qui provoque l’événement
;
; Select EventType() ;Quel type d'évenement il y a eu sur ces deux gadgets?
; Case #PB_EventType_Change ;? il y a du changement dans le gadget : Là ça nous intéresse
; CalculSurface(ValF(GetGadgetText(#Longueur)), ValF(GetGadgetText(#Largeur)));On appelle la procédure de calcul de la surface
; EndSelect ;Fin du Seledt EventType()
; EndSelect ;Fin du Seledt EventGadget()
; *** Je provoque le déclenchement par le bouton Calculer
Case #Bouton_Calculer
CalculSurface(ValF(GetGadgetText(#Longueur)), ValF(GetGadgetText(#Largeur)));On appelle la procédure de calcul de la surface
EndSelect
Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenêtre ?
End ;Apparemment oui : Fermeture de la fenêtre.
EndSelect
ForEver
; IDE Options = PureBasic 5.31 (Windows - x64)
; CursorPosition = 68
; FirstLine = 32
; Folding = -
; EnableUnicode
; EnableXP