Bien sur que si.klystron a écrit :si je veux avoir des décimales ,les variables en point F , les mots cles protected ne sont plus valable ?
Code : Tout sélectionner
Procedure CalculPerimetre(Longueur.s, Largeur.s)
Protected AB = Val(Longueur)
Protected AC = Val(Largeur)
Protected Resultat.i
Protected BC.i ;C'est la longueur à retrouver
Resultat = Pow(AB,2) + Pow(AC,2)
BC = Sqr(Resultat)
MessageRequester("Résultat de l'opération", Str(AB + BC + AC))
EndProcedure
Lors des explications précédentes tu as appris à détecter quel était le gadget qui a provoqué un événementklystron a écrit :si je veux que dés que j'ai entré la dernière valeur( longueur et largeur ), les résultats de la surface et du périmètre s'affichent sans toucher aux deux boutons ?
avec la fonction EventGadget()
Nous allons voir cette fois-çi que la fonction EventType() permet de savoir quel type d’événement il c'est produit sur un gadget.
Regarde ce code largement commenté
Code : Tout sélectionner
Enumeration Window
#MaFenetre
EndEnumeration
Enumeration Gadget
#Longueur
#Largeur
#Surface
EndEnumeration
;Création de la fenetre et des différents gadgets
Procedure Open_MainForm()
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")
TextGadget(#PB_Any, 10, 35, 100, 22, "Longueur")
StringGadget(#Longueur, 120, 30, 80, 22, "", #PB_String_Numeric)
TextGadget(#PB_Any, 10, 65, 100, 22, "Largeur")
StringGadget(#Largeur, 120, 60, 80, 22, "", #PB_String_Numeric)
TextGadget(#PB_Any, 10, 100, 100, 22, "Surface")
StringGadget(#Surface, 120, 100, 80, 22, "", #PB_String_ReadOnly) ;Ce gadget sera en lecture seule
EndProcedure
;Calcul de la surface d'un triangle rectangle
Procedure CalculSurface(Longueur.s, largeur.s)
Protected AB = Val(Longueur)
Protected AC = Val(Largeur)
Protected Resultat.i
Resultat = (AB * AC)/2
SetGadgetText(#Surface, Str(Resultat))
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 #Longueur ;Apparemment c'est le gadget #Longueur qui provoque l’événement
Select EventType() ;Quel type d'évenement il y a eu sur le gadget #Longueur?
Case #PB_EventType_Focus ;? Le curseur est dans le gadget #Longueur : On ne fera rien
Case #PB_EventType_LostFocus ;? le curseur vient de quitter le gadget #Longueur : On ne fera rien
Case #PB_EventType_Change ;? il y a du changement dans le gadget : Là ça nous intéresse
CalculSurface(GetGadgetText(#Longueur), GetGadgetText(#Largeur)) ;On appelle la procédure de calcul de la surface
EndSelect
Case #Largeur ;Apparemment c'est le gadget #Largeur qui provoque l’événement
Select EventType() ;Quel type d’événement il y a eu sur le gadget #largeur?
Case #PB_EventType_Change ;? il y a du changement dans le gadget (Inutile de traiter les événements qui ne font pas l'objet de calcul)
CalculSurface(GetGadgetText(#Longueur), GetGadgetText(#Largeur)) ;On appelle la procédure de calcul de la surface
EndSelect
EndSelect
Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenêtre ?
End ;Apparemment oui : Fermeture de la fenêtre.
EndSelect
ForEver