Code : Tout sélectionner
; exemple de programme code pour initiation au purebasic.
;---------------------------------------------------------------------------------------
EnableExplicit ; pour messages d'erreur des varables en mode test.
Enumeration Imageincrustee
#MonImage
EndEnumeration
Enumeration Fonts
#FontGlobal
EndEnumeration
Enumeration Window
#MaFenetre
EndEnumeration
Enumeration Gadget
#MaFeuilleDePapier ;prendra la valeur 1
#Longueur
#Largeur ;prendra la valeur 1
#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()
LoadFont(#FontGlobal, "Arial", 12) ; hauteur 12 pixels en type Arial
;---------------Affectation de la font global à l'ensemble de la fenetre-----------
SetGadgetFont(#PB_Default, FontID(#Fontglobal)) ; police a toutes les plages.
OpenWindow(#MaFenetre, 10, 10, 800, 600, " -Elements d'un triangle rectangle- ")
;---------Chargement d'une image (Tu donnes le nom que tu veux à la variable ici monimage )--------
UseJPEGImageDecoder() ;Decodeur obligatgoire
LoadImage(#monimage, "Data/noel.jpg")
Debug #MonImage
;--------------------On positionne le canvas---------------------
CanvasGadget(#MaFeuilleDePapier, 350,350, 320, 230) ; dimensions de limage pixels
;----------Commençons le dessin sur le canvas----------------
StartDrawing(CanvasOutput(#MaFeuilleDePapier))
;-----------------Exemple une image-----------------
DrawImage(ImageID(#MonImage),0 ,0)
;------------------Fin de lincrustation de limage ---------------------
StopDrawing()
TextGadget(#PB_Any, 10, 35, 200, 26, "Longueur")
StringGadget(#Longueur, 140, 35, 120, 26, "")
TextGadget(#PB_Any, 10, 65, 200, 26, "Largeur")
StringGadget(#Largeur, 140, 65, 120, 26, "")
TextGadget(#PB_Any, 10, 100, 200, 26, "Surface")
StringGadget(#Surface, 140, 100, 120, 26, "", #PB_String_ReadOnly) ;Ce gadget sera en lecture seule
TextGadget(#PB_Any, 10, 135, 200, 26, "Hypotenuse")
StringGadget(#Hypotenuse, 140, 135, 120, 26, "", #PB_String_ReadOnly) ;Ce gadget sera en lecture seule
TextGadget(#PB_Any, 10, 170, 200, 26, "Perimetre")
StringGadget(#Perimetre, 140, 170, 120, 26, "", #PB_String_ReadOnly) ;Ce gadget sera en lecture seule
ButtonGadget(#Bouton_Calculer, 10, 220, 120, 28, "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'Hypotenuse---------------------------------
Procedure Calculhypotenuse(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------------------------------
Procedure Calculperimetre(Longueur.f, Largeur.f,BC.f)
Protected AB.f = longueur
Protected AC.f = largeur
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
Case #Bouton_Calculer ; Je provoque le déclenchement par le bouton Calculer
;------------------------- on appelle les procedures:------------------------------------
CalculSurface(ValF(GetGadgetText(#Longueur)),
ValF(GetGadgetText(#Largeur)))
Calculhypotenuse(ValF(GetGadgetText(#Longueur)),
ValF(GetGadgetText(#Largeur)))
Calculperimetre(ValF(GetGadgetText(#longueur)),
ValF(GetGadgetText(#largeur)),
ValF(GetGadgetText(#hypotenuse)))
EndSelect
Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenêtre ?
End ;Apparemment oui : Fermeture de la fenêtre.
EndSelect
ForEver
c'est bon, ça fonctionne bien, merci Falsam pour ton aide.
donc les énumérations sont assez critiques , sur certains codes.
il faut le savoir.
bonne soirée a tous.