Page 3 sur 10
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:13
par falsam
Concevoir une interface graphique c'est apprendre à manipuler les Objets en Pure Basic.
Qu'est ce qu'un Objet ? C'est par exemple une
fenêtre.
La syntaxe d'affichage d'une fenêtre est :
OpenWindow(#Fenetre, x, y, LargeurInterne, HauteurInterne, Titre$)
#Fenetre est une variable représentant l'identifiant numérique de cette fenêtre. Le premier identifiant commence à 0
Code
Code : Tout sélectionner
OpenWindow(0, 10, 100, 800, 600, "Surface d'un triangle rectangle")
Si tu testes ce code, la fenêtre va s'ouvrir rapidement et se fermer tout aussi rapidement.

Pourquoi ? Parce qu'il manque la gestion événementielle de cette fenêtre à travers une boucle événementielle .
Il y a plusieurs méthodes pour gérer une boucle événementielle. La plus classique est le couple d'instruction
Repeat ... ForEver
Voiçi le nouveau code de création d'une fenêtre et de sa boucle événementielle.
Code : Tout sélectionner
;Ouverture d'une fenêtre
OpenWindow(0, 100, 100, 800, 600, "Surface d'un triangle rectangle")
;Boucle évenementielle
Repeat
Select WaitWindowEvent() ;Un évenement est arrivé
Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
End ;Apparement oui : Fermeture de la fenêtre.
EndSelect
ForEver
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:14
par klystron
selec et endselec c'est un contrôle
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:16
par klystron
ok oui une fenetre c'est ouverte
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:18
par falsam
On va créer maintenant un bouton et afficher un message quand on clique dessus.
Code : Tout sélectionner
;Ouverture d'une fenêtre
OpenWindow(0, 100, 100, 800, 600, "Surface d'un triangle rectangle")
;Création d'un bouton
ButtonGadget(0, 700, 30, 80, 22, "Clique moi")
;Boucle évenementielle
Repeat
Select WaitWindowEvent() ;Un événement est arrivé
Case #PB_Event_Gadget ;Est un gadget qui a provoqué l'événement ?
Select EventGadget() ;Apparemment oui : On cherche qui
Case 0
MessageRequester("Information", "Vous avez cliqué sur le bouton")
EndSelect
Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenêtre ?
End ;Apparement oui : Fermeture de la fenêtre.
EndSelect
ForEver
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:20
par klystron
oui c'est ok
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:27
par falsam
Référencer ces objets (
ou gadgets) Pure Basic[/i] par des numéros n'est pas très pratique. Il est difficile de se rappeler qui est qui.
■
Les énumérations Enumeration .... EndEnumeration.
Les énumérations sont très pratiques pour déclarer rapidement une série de constantes sans s'occuper de leur valeur numérique.
Nous allons reprendre le code précédent en ajoutant un autre bouton.
Code : Tout sélectionner
Enumeration Fenetre ;Pour le moment il y en a qu'une
#MaFenetre
EndEnumeration
Enumeration Gadgets
#Button1
#Button2
EndEnumeration
;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")
;Création d'un bouton
ButtonGadget(#Button1, 700, 30, 80, 22, "Clique moi")
ButtonGadget(#Button2, 700, 60, 80, 22, "Clique moi")
;Boucle évenementielle
Repeat
Select WaitWindowEvent() ;Un évenement est arrivé
Case #PB_Event_Gadget ;Est un gadget qui a provoqué l'événement ?
Select EventGadget() ;Apparement oui : On cherche qui
Case #Button1 ;Clique sur le bouton 1
MessageRequester("Information", "Vous avez cliqué sur le bouton")
Case #Button1 ;Clique sur le bouton 2
MessageRequester("Information", "Vous avez cliqué sur le bouton")
EndSelect
Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
End ;Apparement oui : Fermeture de la fenêtre.
EndSelect
ForEver
je te laisse le soin de l'analyser.
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:32
par falsam
Si tu as bien analysé ce code tu as du voir qu'on répétait deux fois
Code : Tout sélectionner
MessageRequester("Information", "Vous avez cliqué sur le bouton")
■
Les procédure. Procedure .... EndProcedure
Une procédure est une partie du code indépendante du programme principal qui peut avoir des paramètres et ses propres variables.
Reprenons le code précédent dans lequel nous appellerons une procédure pour afficher un message.
Code : Tout sélectionner
Enumeration Fenetre ;Pour le moment il y en a qu'une
#MaFenetre
EndEnumeration
Enumeration Gadgets
#Button1
#Button2
EndEnumeration
Procedure AfficheMessage()
MessageRequester("Information", "Vous avez cliqué sur le bouton")
EndProcedure
;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")
;Création d'un bouton
ButtonGadget(#Button1, 700, 30, 80, 22, "Clique moi")
ButtonGadget(#Button2, 700, 60, 80, 22, "Clique moi")
;Boucle évenementielle
Repeat
Select WaitWindowEvent() ;Un évenement est arrivé
Case #PB_Event_Gadget ;Est un gadget qui a provoqué l'événement ?
Select EventGadget() ;Apparement oui : On cherche qui
Case #Button1 ;Clique sur le bouton 1
AfficheMessage()
Case #Button1 ;Clique sur le bouton 2
AfficheMessage()
EndSelect
Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
End ;Apparement oui : Fermeture de la fenêtre.
EndSelect
ForEver
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:32
par klystron
Oui , mais le deuxieme bouton ne sort pas de message .
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:38
par klystron
je ne vois pas pourquoi le bouton du bas ne fonctionne pas
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:38
par falsam
klystron a écrit :Oui , mais le deuxieme bouton ne sort pas de message .
Oui et pourquoi ?
Décortique le code dans la boucle événementielle

Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:40
par klystron
il faut mettre bouton 2 aulieu de bouton 1
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:41
par klystron
case bouton 1 faut mettre bouton 2
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:48
par klystron
Oui ça marche apres essai

Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 22:51
par falsam
klystron a écrit :Oui ça marche apres essai

Voila un joli débogage de code
Effectivement c'était ça: Correction du code
Code : Tout sélectionner
Enumeration Fenetre ;Pour le moment il y en a qu'une
#MaFenetre
EndEnumeration
Enumeration Gadgets
#Button1
#Button2
EndEnumeration
Procedure AfficheMessage()
MessageRequester("Information", "Vous avez cliqué sur le bouton")
EndProcedure
;Ouverture d'une fenêtre
OpenWindow(#MaFenetre, 100, 100, 800, 600, "Surface d'un triangle rectangle")
;Création d'un bouton
ButtonGadget(#Button1, 700, 30, 80, 22, "Clique moi")
ButtonGadget(#Button2, 700, 60, 80, 22, "Clique moi")
;Boucle évenementielle
Repeat
Select WaitWindowEvent() ;Un évenement est arrivé
Case #PB_Event_Gadget ;Est un gadget qui a provoqué l'événement ?
Select EventGadget() ;Apparement oui : On cherche qui
Case #Button1 ;Clique sur le bouton 1
AfficheMessage()
Case #Button2 ;Clique sur le bouton 2
AfficheMessage()
EndSelect
Case #PB_Event_CloseWindow ;Est ce une fermeture de la fenetre ?
End ;Apparement oui : Fermeture de la fenêtre.
EndSelect
ForEver
Re: calcul surface d'un rectangle pour me familiariser avec
Publié : mar. 02/déc./2014 23:00
par falsam
Revenons sur les procédures. (On va oublié 5 secondes les fenêtres)
Comme je l'ai précisé auparavant : Une procédure est une partie du code indépendante du programme principal
qui peut avoir des paramètres et
ses propres variables.
Nous allons voir comment faire a travers une procédure qui nous permet de calculer la surface d'un triangle rectangle.
Code : Tout sélectionner
Procedure Surface(AB.i, AC.i)
Protected Resultat.i
Resultat = (AB * AC)/2
Debug Resultat
EndProcedure
Surface(3,4)
■ La procedure Surface reçoit en paramètres le cotes AB et le cotes AC d'un triangle rectangle.
■ Une variable protégé interne (
Resultat.i) à cette procédure recevra ce résultat.
■ Si AB = 3 et AC = 4, L'appel à cette procédure se fera de cette manière
Surface(3,4)