calcul surface d'un rectangle pour me familiariser avec pb .
Re: calcul surface d'un rectangle pour me familiariser avec
Bienvenu à toi Micheao.
@Marc56
J'ajoute une petite remarque sur les polices : la fonction native FontID() est nécessaire.
@Klystron
Ce n'était pas une consigne (je ne suis pas habilité!) : c'est pour dire qu'on se rend bien compte que ce n'est pas extrêmement compliqué d'ajouter un paramètre.
@Marc56
J'ajoute une petite remarque sur les polices : la fonction native FontID() est nécessaire.
@Klystron
Ce n'était pas une consigne (je ne suis pas habilité!) : c'est pour dire qu'on se rend bien compte que ce n'est pas extrêmement compliqué d'ajouter un paramètre.
Re: calcul surface d'un rectangle pour me familiariser avec
Bonjour Olivier,
concernant le bout de code de Falsam, oui c'est super propre
je vais regardé cela .
A+
*************************************
me voila revenu, mais je ne sais pas ou placer la ligne setgadgetFont ( ... ) apres openwindow... element d'un triangle rectangle ?.ou avant cette ligne ?
mon code actuellement :
concernant le bout de code de Falsam, oui c'est super propre

je vais regardé cela .
A+
*************************************
me voila revenu, mais je ne sais pas ou placer la ligne setgadgetFont ( ... ) apres openwindow... element d'un triangle rectangle ?.ou avant cette ligne ?
mon code actuellement :
Code : Tout sélectionner
; exemple de programme code pour initiation au purebasic.
;---------------------------------------------------------------------------------------
Enableexplicit ; pour messages d'erreur des varables.
Enumeration Fonts
#FontGlobal
#FontBold
#FontTitre
EndEnumeration
Enumeration Window
#MaFenetre
EndEnumeration
Enumeration Gadget
#Longueur
#Largeur
#Surface
#Hypotenuse
#Perimetre
#Bouton_Calculer ; Déclarer l'ID du bouton Calculer
EndEnumeration
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
;-------------------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'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
; IDE Options = PureBasic 5.31 (Windows - x64)
; CursorPosition = 81
; FirstLine = 83
; Folding = -
; EnableUnicode
; EnableXP
; Executable = triangle_ecole.exe
Re: calcul surface d'un rectangle pour me familiariser avec
merci klystron
je suis entrain d'etudié ton code pour apprendre
merci beaucoup à tous
je suis entrain d'etudié ton code pour apprendre
merci beaucoup à tous
Re: calcul surface d'un rectangle pour me familiariser avec
je pense que dans global il y a des mots non déclarés ?
salut Gaétan, je suis comme toi j'essaye de comprendre , pas évident
mais petit a petit ca va , faut pas tout faire en meme temps si non on est saturé ...
salut Gaétan, je suis comme toi j'essaye de comprendre , pas évident

mais petit a petit ca va , faut pas tout faire en meme temps si non on est saturé ...
Re: calcul surface d'un rectangle pour me familiariser avec
falsam a écrit :Bonjour Marc. Non il est possible d'affecter une font à l'ensemble des gadgets d'une fenêtre en une seule fois avec : SetGadgetFont(#PB_Any, FontID(#Fontglobal))

J'aurais dû lire plus attentivement l'aide dès le début (et pourtant c'était sur la première ligne)
Si la valeur de #Gadget est #PB_Default, alors la police par défaut utilisée par les nouveaux gadgets est changée par la nouvelle valeur.
Merci pour ce rappel

Ça va grandement me simplifier la vie. Dire que j'ai tartiné une ligne de trop pour presque tous mes gadgets


Re: calcul surface d'un rectangle pour me familiariser avec
salut Marc56,
je ne sais pas si en debut de programme ( enumeration fonts) est bon alors ?
comme la ligne ( global ) , y'a peut-être plus simple ?.
je verrais avec Falsam mon maitre .
a+
PS/ la derniere fenetre que Falsam a faites est réglable en dimensions , je viens de voir cela .
je ne sais pas si en debut de programme ( enumeration fonts) est bon alors ?
comme la ligne ( global ) , y'a peut-être plus simple ?.
je verrais avec Falsam mon maitre .
a+
PS/ la derniere fenetre que Falsam a faites est réglable en dimensions , je viens de voir cela .
Dernière modification par klystron le dim. 07/déc./2014 14:47, modifié 1 fois.
Re: calcul surface d'un rectangle pour me familiariser avec
klystron a écrit :je pense que dans global il y a des mots non déclarés ?
Code : Tout sélectionner
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget
(ça permet de soulager le code et de ne l'écrire qu'une seule fois si on fait plusieurs fenêtres)
(Mais il été oublié dans la suite. Je pense que la ligne OpenWindow aurait dû être)
Code : Tout sélectionner
OpenWindow(#MaFenetre, 100, 100, 800, 600, " -Elements d'un triangle rectangle- ", WindowStyle)
Code : Tout sélectionner
OpenWindow(#MaFenetre, 100, 100, 800, 600, " -Elements d'un triangle rectangle- ", #PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered|#PB_Window_SizeGadget

PS. N'oublie pas que Global n'est pas une commande, mais une qualification qui indique que la variable qui suit est accessible partout y compris dans une procédure.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: calcul surface d'un rectangle pour me familiariser avec
@klystron: Tu as bien déclaré tes identifiant de fonts mais je ne vois aucune ligne permettant de charger les fonts.
J'ai du allé trop vite dans le code que j'ai fourni. !
Allez c'est parti pour un petit tutoriel.
[ Comment changer la police de caractère d'une application ]
■ Un code basic affichant une fenêtre.
Reprenons depuis le début : Voici un code trés simple qui pour le moment utilise la police de caractére par défaut de ton ordinateur.
Tu peux le tester avant de passer la suite.
■ On souhaite ajouter une police globale.
Insère ce code au début du code précédentOn déclare ici comme une sorte de variable qui va recevoir l'identifiant de la police de caractére qu'on va charger plus loin.
Justement chargeons cette police: Insére ce code au début de la procédure Open_MainForm()On charge ici la police "Arial" avec une taille de 12 pixels.
et c'est pas fini
Maintenant tu va affecter cette font à l'ensemble de ton application.
Insére ce code juste avant l'ouverture de la fenêtre.
■ Pour finir.
A l’exécution de ton code, l'ensemble des gadgets s'affiche avec la police Arial et une taille de 12 pixels.
Allez à toi de jouer et montre nous ce code exemple avec les modifications permettant de changer la taille de la police de caractére.
J'ai du allé trop vite dans le code que j'ai fourni. !
Allez c'est parti pour un petit tutoriel.
[ Comment changer la police de caractère d'une application ]
■ Un code basic affichant une fenêtre.
Reprenons depuis le début : Voici un code trés simple qui pour le moment utilise la police de caractére par défaut de ton ordinateur.
Code : Tout sélectionner
Enumeration Windows
#Mainform
EndEnumeration
Enumeration Gadgets
#Nom
#Adresse
#Valider
EndEnumeration
Procedure Open_MainForm()
;Ouverture de la fenêtre
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form")
TextGadget(#PB_Any, 20, 80, 100, 22, "Nom")
StringGadget(#Nom, 150, 80, 200, 22, "")
TextGadget(#PB_Any, 20, 105, 100, 22, "Adresse")
EditorGadget(#Adresse, 150, 105, 200, 100)
ButtonGadget(#Valider, 400, 80, 80, 22, "Valider")
SetActiveGadget(#Nom)
EndProcedure
Open_MainForm()
Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow

■ On souhaite ajouter une police globale.
Insère ce code au début du code précédent
Code : Tout sélectionner
Enumeration Fonts
#FontGlobal
EndEnumeration
Justement chargeons cette police: Insére ce code au début de la procédure Open_MainForm()
Code : Tout sélectionner
;Chargement font global
LoadFont(#FontGlobal, "Arial", 12)
et c'est pas fini

Maintenant tu va affecter cette font à l'ensemble de ton application.
Insére ce code juste avant l'ouverture de la fenêtre.
Code : Tout sélectionner
;Affectation de la font global à l'ensemble de la fenetre
SetGadgetFont(#PB_Default, FontID(#Fontglobal))
A l’exécution de ton code, l'ensemble des gadgets s'affiche avec la police Arial et une taille de 12 pixels.
Allez à toi de jouer et montre nous ce code exemple avec les modifications permettant de changer la taille de la police de caractére.

Dernière modification par falsam le dim. 07/déc./2014 15:21, modifié 3 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: calcul surface d'un rectangle pour me familiariser avec
ok merci Marc56 pour les infos.
je vais essayé de ne pas me trompé
******************************************
bonjour Falsam ,
je viens de voir ton tuto je me penche dessus ...
j'ai une erreur a la ligne 20 en rouge
voici mon code :
je vais essayé de ne pas me trompé

******************************************
bonjour Falsam ,
je viens de voir ton tuto je me penche dessus ...
j'ai une erreur a la ligne 20 en rouge

voici mon code :
Code : Tout sélectionner
Enumeration Fonts
#FontGlobal
EndEnumeration
Enumeration Windows
#Mainform
EndEnumeration
Enumeration Gadgets
#Nom
#Adresse
#Valider
EndEnumeration
Procedure Open_MainForm()
;Affectation de la font global à l'ensemble de la fenetre
SetGadgetFont(#PB_Default, FontID(#Fontglobal))
;Ouverture de la fenêtre
;Chargement font global
LoadFont(#FontGlobal, "Arial", 12)
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
TextGadget(#PB_Any, 20, 80, 100, 22, "Nom")
StringGadget(#Nom, 150, 80, 200, 22, "")
TextGadget(#PB_Any, 20, 105, 100, 22, "Adresse")
EditorGadget(#Adresse, 150, 105, 200, 100)
ButtonGadget(#Valider, 400, 80, 80, 22, "Valider")
SetActiveGadget(#Nom)
EndProcedure
Open_MainForm()
Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
Dernière modification par klystron le dim. 07/déc./2014 15:06, modifié 1 fois.
Re: calcul surface d'un rectangle pour me familiariser avec
Effectivement, c'est une jolie "feinte" falsam! C'est élégant!
Autrement dit, "SetGadgetFont(#PB_Any, FontID(Police) )" est à placer juste avant le prochain gadget à créer dans la police souhaitée.
Autrement dit, "SetGadgetFont(#PB_Any, FontID(Police) )" est à placer juste avant le prochain gadget à créer dans la police souhaitée.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: calcul surface d'un rectangle pour me familiariser avec
Si tu places cette ligne avant l'ouverture de ta fenêtre, c'est l'ensemble des gadgets que tu crées dans cette fenêtre qui auront cette même police.Ollivier a écrit :Autrement dit, "SetGadgetFont(#PB_Any, FontID(Police) )" est à placer juste avant le prochain gadget
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: calcul surface d'un rectangle pour me familiariser avec
@
Tu as cette erreur parce que tu fais ton SetGadgetFont(#PB_Default, FontID(#Fontglobal)) avant de charger la police. Lis bien à nouveau le mini tutorielklystron a écrit :'ai une erreur a la ligne 20 en rouge

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: calcul surface d'un rectangle pour me familiariser avec
la ca passe ...
*******************************************
bon je l'ai essayé en test .
Code : Tout sélectionner
Enumeration Fonts
#FontGlobal
EndEnumeration
Enumeration Windows
#Mainform
EndEnumeration
Enumeration Gadgets
#Nom
#Adresse
#Valider
EndEnumeration
Procedure Open_MainForm()
;Ouverture de la fenêtre
;Chargement font global
LoadFont(#FontGlobal, "Arial", 12)
OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
;Affectation de la font global à l'ensemble de la fenetre
SetGadgetFont(#PB_Default, FontID(#Fontglobal))
TextGadget(#PB_Any, 20, 80, 100, 22, "Nom")
StringGadget(#Nom, 150, 80, 200, 22, "")
TextGadget(#PB_Any, 20, 105, 100, 22, "Adresse")
EditorGadget(#Adresse, 150, 105, 200, 100)
ButtonGadget(#Valider, 400, 80, 80, 22, "Valider")
SetActiveGadget(#Nom)
EndProcedure
Open_MainForm()
Repeat : Until WaitWindowEvent(10) = #PB_Event_CloseWindow
; IDE Options = PureBasic 5.31 (Windows - x64)
; CursorPosition = 14
; FirstLine = 2
; Folding = -
; EnableUnicode
; EnableXP
bon je l'ai essayé en test .
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: calcul surface d'un rectangle pour me familiariser avec
Et bien voila c'est pas mal. Tu n'as plus qu'à faire la même chose sur ton code 

Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: calcul surface d'un rectangle pour me familiariser avec
pour mon code triangle c'est la meme chose ?
donc le texte que j'ai mis enumaration font ... il n'y en a qu'un seul a mettre ?
par defaut il mettera la font windows classique en final ?
donc le texte que j'ai mis enumaration font ... il n'y en a qu'un seul a mettre ?
par defaut il mettera la font windows classique en final ?
Dernière modification par klystron le dim. 07/déc./2014 15:31, modifié 2 fois.