laser_bleu

Salut, j'ai rien compris à ce que tu veux...Laser_bleu a écrit :bonjour, je suis novice, j'aimerais avoir un exemple de fenetre de sortie pour entrer une valeur dans un rectangle approprié et une sortie de calcul par exemple dans un autre rectangle de cette fenetre , merci par avance.
laser_bleu
Code : Tout sélectionner
Enumeration
#window_0
#bouton_1
#bouton_2
#bouton_3
#Gadget
#chaine_1
#chaine_2
#chaine_3
#Text
#Text_0
#Text_1
EndEnumeration
Enumeration
#font
EndEnumeration
;ces valeurs seront accessibles dans tous le code
Global Resultat.l
Global Resultat2.l
Global Resultat$
Global Resultat2$
If OpenWindow(#window_0, 443, 86, 350, 260, "Davida", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar)
; pour afficher les cases dans lesquelles s'affichent les valleurs
; " #PB_String_ReadOnly " ----> pour signifier que cette case ne pourra pas etre écrit(donc lecture seule)
; " #PB_String_Numeric " ----> pour signifier que cette case ne contiendra que des valeurs numériques
StringGadget(#chaine_1, 220, 35, 110, 25, "", #PB_String_ReadOnly | #PB_Text_Right)
StringGadget(#chaine_2, 220, 95, 110, 25, "", #PB_String_ReadOnly | #PB_Text_Right)
StringGadget(#chaine_3, 220, 155, 110, 25, "0", #PB_String_Numeric | #PB_Text_Right)
ButtonGadget(#bouton_1, 230, 220, 110, 22, "Quitter") ;pour créer le bouton "Quitter"
ButtonGadget(#bouton_2, 10, 220, 110, 22, "Commencer", #PB_EventType_LeftClick)
ButtonGadget(#bouton_3, 120, 220, 110, 22, "Verifier")
TextGadget(#Text, 100, 40, 160, 20, "1er Nombre :") ; pour afficher le texte "1er Nombre :"
TextGadget(#Text_0, 90, 105, 170, 20, "2ème Nombre :")
TextGadget(#Text_1, 125, 165, 55, 20, "Resultat :")
TextGadget(#Text_0, 185, 65, 20, 20, "+")
EndIf
;cette partie permet de choisir les valeurs à afficher pour les operérations
;ces valeurs sont choisies de façon allétoire.
;la premiere valeur est comprise entre 0 et 7000
;la premiere valeur est comprise entre 0 et 4560
;juste des valeurs prises au hasard
Procedure Autres_operations()
Autres_operations :
Resultat.l = Random(7000)
Resultat2.l = Random(4560)
Resultat$ = Str (Resultat.l)
Resultat2$ = Str (Resultat2.l)
SetGadgetText(#chaine_1, Str (Val(Resultat$)))
SetGadgetText(#chaine_2, Str (Val(Resultat2$)))
DisableGadget(#bouton_2, 1)
EndProcedure
Repeat
EventID = WaitWindowEvent()
If Event = #PB_Event_Gadget
EndIf
Select EventID ; Gadget()
Case #PB_Event_Gadget
Select EventGadget()
Case 1 : Event = #bouton_1
; Affichage des nombres alléatoires
Case 2 : Evebt = #bouton_2
Autres_operations()
Case 3 : Event3 = #bouton_3
;un message à afficher si l'utilisateur ne met rien dans la case et clique sur le bouton
;Vérifier
If GetGadgetText(#chaine_3) = "0" Or GetGadgetText(#chaine_3) = ""
MessageRequester("Désolé", "La case est vide,Entrez d'abord votre réponse.", #PB_MessageRequester_Ok)
Else
nombre + 1
If nombre = 5 ;pour limiter le nombre d'opération à 5
MessageRequester("Désolé", "Toutes les opérations sont terminées.", #PB_MessageRequester_Ok)
DisableGadget(#bouton_2, 0)
Else
; si le resultat est faut,voici un message à afficher
If GetGadgetText(#chaine_3) <> Str (Resultat + Resultat)
rep = MessageRequester("Désolé", "Mauvaise réponse. Voulez-vous voir la bonne réponse ?", #PB_MessageRequester_YesNo)
If rep = 6
;un autre message à afficher pour demander à l'utilisateur s'il veut réessayer
; ou s'il souhaite voir la bonne reponse
MessageRequester("Reponse", "La bonne réponse est:" + Str (Resultat + Resultat), #PB_MessageRequester_Ok)
SetGadgetText(#chaine_3, "")
ElseIf rep = 7
SetGadgetText(#chaine_3, "")
EndIf
Else
rep_2 = MessageRequester("Thank", "Bravo", #PB_MessageRequester_Ok)
Autres_operations()
nombre = 0
EndIf
EndIf
EndIf
EndSelect
Case #PB_Event_CloseWindow
Event = #bouton_1
EndSelect
Until Event = #bouton_1
Code : Tout sélectionner
;***********************************
;***********************************
;***********************************
; Passe une chaîne en majuscule
;***********************************
;***********************************
;***********************************
;===================================
; INITIALISATION
;===================================
#FenetreTest = 1
#StyleStandard = $CF0001
Enumeration
#Entree1
#Sortie1
EndEnumeration
Define Event0.L
Define Texte.S
;===================================
; DEMARRAGE
;===================================
If OpenWindow(#FenetreTest, 0, 0, 156, 96, "Test", #StyleStandard)
StringGadget(#Entree1, 16, 16, 128, 24, "")
StringGadget(#Sortie1, 16, 40, 128, 24, "")
EndIf
;===================================
; BOUCLE PRINCIPALE
;===================================
Repeat
; On attend un événement système...
Event0 = WaitWindowEvent() ; ...stocké dans Event0
; On récupère le texte d'entrée
Texte = GetGadgetText(#Entree1)
; On le met en majuscule
Texte = UCase(Texte)
; On le place dans la zone de sortie
SetGadgetText(#Sortie1, Texte)
; On laisse le CPU se reposer un peu...
Delay(15)
; Si l'événement système est une sortie (code 16)...
Until Event0 = 16
; ...On ne remonte pas à la ligne REPEAT (début de boucle)
End
Code : Tout sélectionner
Enumeration
#window_0
#bouton_1
#bouton_2
#bouton_3
#Gadget
#chaine_1
#chaine_2
#chaine_3
#Text
#Text_0
#Text_1
EndEnumeration
Enumeration
#font
EndEnumeration
;ces valeurs seront accessibles dans tous le code
Global Resultat.l
Global Resultat2.l
Global Resultat$
Global Resultat2$
If OpenWindow(#window_0, 443, 86, 350, 260, "Davida", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar)
; pour afficher les cases dans lesquelles s'affichent les valleurs
; " #PB_String_ReadOnly " ----> pour signifier que cette case ne pourra pas etre écrit(donc lecture seule)
; " #PB_String_Numeric " ----> pour signifier que cette case ne contiendra que des valeurs numériques
StringGadget(#chaine_1, 220, 35, 110, 25, "", #PB_String_ReadOnly | #PB_Text_Right)
StringGadget(#chaine_2, 220, 95, 110, 25, "", #PB_String_ReadOnly | #PB_Text_Right)
StringGadget(#chaine_3, 220, 155, 110, 25, "0", #PB_String_Numeric | #PB_Text_Right)
ButtonGadget(#bouton_1, 230, 220, 110, 22, "Quitter") ;pour créer le bouton "Quitter"
ButtonGadget(#bouton_2, 10, 220, 110, 22, "Commencer", #PB_EventType_LeftClick)
ButtonGadget(#bouton_3, 120, 220, 110, 22, "Verifier")
TextGadget(#Text, 100, 40, 160, 20, "1er Nombre :") ; pour afficher le texte "1er Nombre :"
TextGadget(#Text_0, 90, 105, 170, 20, "2ème Nombre :")
TextGadget(#Text_1, 125, 165, 55, 20, "Resultat :")
TextGadget(#Text_0, 185, 65, 20, 20, "+")
EndIf
;cette partie permet de choisir les valeurs à afficher pour les operérations
;ces valeurs sont choisies de façon allétoire.
;la premiere valeur est comprise entre 0 et 7000
;la premiere valeur est comprise entre 0 et 4560
;juste des valeurs prises au hasard
Procedure Autres_operations()
Autres_operations :
Resultat.l = Random(7000)
Resultat2.l = Random(4560)
Resultat$ = Str (Resultat.l)
Resultat2$ = Str (Resultat2.l)
SetGadgetText(#chaine_1, Str (Val(Resultat$)))
SetGadgetText(#chaine_2, Str (Val(Resultat2$)))
DisableGadget(#bouton_2, 1)
EndProcedure
Repeat
EventID = WaitWindowEvent()
If Event = #PB_Event_Gadget
EndIf
Select EventID ; Gadget()
Case #PB_Event_Gadget
Select EventGadget()
Case 1 : Event = #bouton_1
; Affichage des nombres alléatoires
Case 2 : Evebt = #bouton_2
Autres_operations()
Case 3 : Event3 = #bouton_3
;un message à afficher si l'utilisateur ne met rien dans la case et clique sur le bouton
;Vérifier
If GetGadgetText(#chaine_3) = "0" Or GetGadgetText(#chaine_3) = ""
MessageRequester("Désolé", "La case est vide,Entrez d'abord votre réponse.", #PB_MessageRequester_Ok)
Else
nombre + 1
If nombre = 5 ;pour limiter le nombre d'opération à 5
MessageRequester("Désolé", "Toutes les opérations sont terminées.", #PB_MessageRequester_Ok)
DisableGadget(#bouton_2, 0)
Else
; si le resultat est faut,voici un message à afficher
If GetGadgetText(#chaine_3) <> Str (Resultat + Resultat2)
rep = MessageRequester("Désolé", "Mauvaise réponse. Voulez-vous voir la bonne réponse ?", #PB_MessageRequester_YesNo)
If rep = 6
;un autre message à afficher pour demander à l'utilisateur s'il veut réessayer
; ou s'il souhaite voir la bonne reponse
MessageRequester("Reponse", "La bonne réponse est:" + Str (Resultat + Resultat2), #PB_MessageRequester_Ok)
SetGadgetText(#chaine_3, "")
ElseIf rep = 7
SetGadgetText(#chaine_3, "")
EndIf
Else
rep_2 = MessageRequester("Thank", "Bravo", #PB_MessageRequester_Ok)
Autres_operations()
nombre = 0
EndIf
EndIf
EndIf
EndSelect
Case #PB_Event_CloseWindow
Event = #bouton_1
EndSelect
Until Event = #bouton_1
Code : Tout sélectionner
;***********************************
;***********************************
;***********************************
; Passe une chaîne en majuscule
;***********************************
; On prépare le code pour afficher
; d'autres gadgets
;***********************************
;***********************************
;===================================
; INITIALISATION
;===================================
#FenetreTest = 1
#StyleStandard = $CF0001
Enumeration
#Entree1
#Sortie1
EndEnumeration
Define Event0.L
Define Texte.S
; On rajoute la notion de position de gadget
Define GadgetCurseurY.L
;===================================
; DEMARRAGE
;===================================
If OpenWindow(#FenetreTest, 0, 0, 156, 96, "Test", #StyleStandard)
GadgetCurseurY = 16 ; On règle la position à 16 pixels
StringGadget(#Entree1, 16, GadgetCurseurY, 128, 24, "")
GadgetCurseurY + 32 ; On descend de 32 pixels
StringGadget(#Sortie1, 16, GadgetCurseurY, 128, 24, "")
; On rajoute le redimensionnement de la fenêtre
; en fonction du nombre de gadgets créés
ResizeWindow(#FenetreTest, #PB_Ignore, #PB_Ignore, #PB_Ignore, 32 + GadgetCurseurY)
EndIf
;===================================
; BOUCLE PRINCIPALE
;===================================
Repeat
; On attend un événement système...
Event0 = WaitWindowEvent() ; ...stocké dans Event0
; On récupère le texte d'entrée
Texte = GetGadgetText(#Entree1)
; On le met en majuscule
Texte = UCase(Texte)
; On le place dans la zone de sortie
SetGadgetText(#Sortie1, Texte)
; On laisse le CPU se reposer un peu...
Delay(15)
; Si l'événement système est une sortie (code 16)...
Until Event0 = 16
; ...On ne remonte pas à la ligne REPEAT (début de boucle)
End
Code : Tout sélectionner
;***********************************
;***********************************
;***********************************
; Passe une chaîne en majuscule
;***********************************
; 2) On rajoute une entrée
;***********************************
;***********************************
;===================================
; INITIALISATION
;===================================
#FenetreTest = 1
#StyleStandard = $CF0001
Enumeration
#Entree1
#Entree2
#Sortie1
EndEnumeration
Define Event0.L
Define Texte.S
Define GadgetCurseurY.L
;===================================
; DEMARRAGE
;===================================
If OpenWindow(#FenetreTest, 0, 0, 156, 96, "Test", #StyleStandard)
GadgetCurseurY = 16
StringGadget(#Entree1, 16, GadgetCurseurY, 128, 24, "")
GadgetCurseurY + 32
StringGadget(#Entree2, 16, GadgetCurseurY, 128, 24, "")
GadgetCurseurY + 32
StringGadget(#Sortie1, 16, GadgetCurseurY, 128, 24, "")
ResizeWindow(#FenetreTest, #PB_Ignore, #PB_Ignore, #PB_Ignore, 32 + GadgetCurseurY)
EndIf
;===================================
; BOUCLE PRINCIPALE
;===================================
Repeat
; On attend un événement système...
Event0 = WaitWindowEvent() ; ...stocké dans Event0
; On récupère le texte d'entrée
Texte = GetGadgetText(#Entree1)
; On le met en majuscule
Texte = UCase(Texte)
; On le place dans la zone de sortie
SetGadgetText(#Sortie1, Texte)
; On laisse le CPU se reposer un peu...
Delay(15)
; Si l'événement système est une sortie (code 16)...
Until Event0 = 16
; ...On ne remonte pas à la ligne REPEAT (début de boucle)
End
Code : Tout sélectionner
Define Texte.S
Code : Tout sélectionner
Define Tension.D
Define Intensite.D
Define Puissance.D
Code : Tout sélectionner
;***********************************
;***********************************
;***********************************
; Calcul de la puissance P en
; fonction de l'intensité I
; et la tension U
;***********************************
; (3/4) On programme le calcul
;***********************************
;***********************************
;===================================
; INITIALISATION
;===================================
#FenetreTest = 1
#StyleStandard = $CF0001
Enumeration
#Entree1
#Entree2
#Sortie1
EndEnumeration
Define Event0.L
Define Tension.D
Define Intensite.D
Define Puissance.D
Define GadgetCurseurY.L
;===================================
; DEMARRAGE
;===================================
If OpenWindow(#FenetreTest, 0, 0, 156, 96, "Test", #StyleStandard)
GadgetCurseurY = 16
StringGadget(#Entree1, 16, GadgetCurseurY, 128, 24, "")
GadgetCurseurY + 32
StringGadget(#Entree2, 16, GadgetCurseurY, 128, 24, "")
GadgetCurseurY + 32
StringGadget(#Sortie1, 16, GadgetCurseurY, 128, 24, "")
ResizeWindow(#FenetreTest, #PB_Ignore, #PB_Ignore, #PB_Ignore, 32 + GadgetCurseurY)
EndIf
;===================================
; BOUCLE PRINCIPALE
;===================================
Repeat
; On attend un événement système...
Event0 = WaitWindowEvent() ; ...stocké dans Event0
; On récupère la tension
Tension = ValD(GetGadgetText(#Entree1) )
; On récupère l'intensité
Intensite = ValD(GetGadgetText(#Entree2) )
; On fait le calcul
Puissance = Tension * Intensite
; On le place dans la zone de sortie
SetGadgetText(#Sortie1, StrD(Puissance, 3) )
; On laisse le CPU se reposer un peu...
Delay(15)
; Si l'événement système est une sortie (code 16)...
Until Event0 = 16
; ...On ne remonte pas à la ligne REPEAT (début de boucle)
End
Code : Tout sélectionner
Structure GrandeurPhysique
Nom.S
GadgetNom.L
Valeur.D
GadgetVal.L
Unite.S
GadgetUnite.L
EndStructure
Code : Tout sélectionner
Define Tension.D
Code : Tout sélectionner
Define Tension.GrandeurPhysique
Code : Tout sélectionner
;***********************************
;***********************************
;***********************************
; Calcul de la puissance P en
; fonction de l'intensité I
; et la tension U
;***********************************
; (4) Rajout de texte
; & Mise en structure
;***********************************
;***********************************
;===================================
; INITIALISATION
;===================================
#FenetreTest = 1
#StyleStandard = $CF0001
Structure GrandeurPhysique
Nom.S
GadgetNom.L
Valeur.D
GadgetVal.L
Unite.S
GadgetUnite.L
EndStructure
Define Event0.L
Define Tension.GrandeurPhysique
Define Intensite.GrandeurPhysique
Define Puissance.GrandeurPhysique
;/!\
Global GadgetCurseurY.L
Procedure GrandeurInstaller(*C.GrandeurPhysique, Nom.S, Unite.S)
With *C
\GadgetNom = TextGadget(-1, 16, GadgetCurseurY, 80, 24, Nom)
\GadgetVal = StringGadget(-1, 96, GadgetCurseurY, 128, 24, "")
\GadgetUnite = TextGadget(-1, 240, GadgetCurseurY, 128, 24, Unite)
EndWith
GadgetCurseurY + 32
EndProcedure
;===================================
; DEMARRAGE
;===================================
If OpenWindow(#FenetreTest, 0, 0, 320, 96, "Test", #StyleStandard)
GadgetCurseurY = 16
GrandeurInstaller(Tension, "Tension", "Volt(s)")
GrandeurInstaller(Intensite, "Intensité", "Ampère(s)")
GrandeurInstaller(Puissance, "Puissance", "Watt(s)")
;/!\
ResizeWindow(#FenetreTest, #PB_Ignore, #PB_Ignore, #PB_Ignore, GadgetCurseurY)
EndIf
;===================================
; BOUCLE PRINCIPALE
;===================================
Repeat
; On attend un événement système...
Event0 = WaitWindowEvent() ; ...stocké dans Event0
; On récupère la tension
Tension\Valeur = ValD(GetGadgetText(Tension\GadgetVal) )
; On récupère l'intensité
Intensite\Valeur = ValD(GetGadgetText(Intensite\GadgetVal) )
; /!\
; On fait le calcul
Puissance\Valeur = Tension\Valeur * Intensite\Valeur
; /!\ Modifier le calcul
; On place le résultat dans la zone de sortie
SetGadgetText(Puissance\GadgetVal, StrD(Puissance\Valeur, 3) )
; /!\ Modifier le nom de la sortie /!\
; /!\ car ça n'est pas forcément la puissance /!\
; On laisse le CPU se reposer un peu...
Delay(15)
; Si l'événement système est une sortie (code 16)...
Until Event0 = 16
; ...On ne remonte pas à la ligne REPEAT (début de boucle)
End
Code : Tout sélectionner
Structure GrandeurPhysique
Nom.S
GadgetNom.L
Valeur.D
GadgetVal.L
Unite.S
GadgetUnite.L
Exposant.L ; <<<<<<<< ICI
EndStructure
Code : Tout sélectionner
;***********************************
;***********************************
;***********************************
; Calcul de la puissance P en
; fonction de l'intensité I
; et la tension U
;***********************************
; (4) Rajout de texte
; & Mise en structure
;***********************************
;***********************************
;===================================
; INITIALISATION
;===================================
#FenetreTest = 1
#StyleStandard = $CF0001
Structure GrandeurPhysique
Nom.S
GadgetNom.L
Valeur.D
GadgetVal.L
Unite.S
GadgetUnite.L
Exposant.L
EndStructure
Define Event0.L
Define Tension.GrandeurPhysique
Define Intensite.GrandeurPhysique
Define Puissance.GrandeurPhysique
;/!\
Global GadgetCurseurY.L
Procedure.S StrExpo(n.L, Abrege.L = 0)
Protected Result.S
Static Ech3.S = "atto/a;pico/p;nano/n;micro/µ;milli/m;/;kilo/K;méga/M;giga/G;tera/T"
Static Ech10.S = "centi/c;déci/d;/;déca/Da;hecto/H"
If Abs(n) <= 2
Result = StringField(Ech10, n + 3, ";")
Else
Result = StringField(Ech3, (n / 3) + 6, ";")
EndIf
If Abrege
Result = StringField(Result, 2, "/")
Else
Result = StringField(Result, 1, "/")
Result = UCase(Left(Result, 1) ) + Right(Result, Len(Result) - 1)
EndIf
ProcedureReturn Result
EndProcedure
Procedure GrandeurInstaller(*C.GrandeurPhysique, Nom.S, Unite.S, Exposant.L = 0)
With *C
\GadgetNom = TextGadget(-1, 16, GadgetCurseurY, 80, 24, Nom)
\GadgetVal = StringGadget(-1, 96, GadgetCurseurY, 128, 24, "")
\GadgetUnite = TextGadget(-1, 240, GadgetCurseurY, 128, 24, StrExpo(Exposant) + Unite)
\Exposant = Exposant
EndWith
GadgetCurseurY + 32
EndProcedure
;===================================
; DEMARRAGE
;===================================
If OpenWindow(#FenetreTest, 0, 0, 320, 96, "Test", #StyleStandard)
GadgetCurseurY = 16
GrandeurInstaller(Tension, "Tension", "Volt(s)", -3)
GrandeurInstaller(Intensite, "Intensité", "Ampère(s)", 6)
GrandeurInstaller(Puissance, "Puissance", "Watt(s)", 3)
;/!\
ResizeWindow(#FenetreTest, #PB_Ignore, #PB_Ignore, #PB_Ignore, GadgetCurseurY)
EndIf
;===================================
; BOUCLE PRINCIPALE
;===================================
Repeat
; On attend un événement système...
Event0 = WaitWindowEvent() ; ...stocké dans Event0
; On récupère la tension
Tension\Valeur = ValD(GetGadgetText(Tension\GadgetVal) ) * Pow(10, Tension\Exposant)
; On récupère l'intensité
Intensite\Valeur = ValD(GetGadgetText(Intensite\GadgetVal) ) * Pow(10, Intensite\Exposant)
; /!\
; On fait le calcul
Puissance\Valeur = Tension\Valeur * Intensite\Valeur
; /!\ Modifier le calcul
; On place le résultat dans la zone de sortie
SetGadgetText(Puissance\GadgetVal, StrD(Puissance\Valeur * Pow(10, 0.0 - Puissance\Exposant), 3) )
; /!\ Modifier le nom de la sortie /!\
; /!\ car ça n'est pas forcément la puissance /!\
; On laisse le CPU se reposer un peu...
Delay(15)
; Si l'événement système est une sortie (code 16)...
Until Event0 = 16
; ...On ne remonte pas à la ligne REPEAT (début de boucle)
End