Page 1 sur 1
input inkey?
Publié : sam. 29/mai/2010 15:07
par luciendorali
Bonjour
Vraiment débutant au vu du courrier ; je pensais être un peu dégrossi mais plus j'avance et comme toujours plus l'horizon s'éloigne.
Pour l'heure j'ose à peine avouer sur quoi je bute.
Après avoir crée une fenêtre avec "getscreen..." j'affiche une courbe de type y=f(x,a) dans laquelle x est une variable tandis que m est un paramêtre que je souhaiterais faire changer .
J'en était resté à "input..", réminiscence de l'ancien QBexe ou encore "basica" mais je m'aperçois que cette entrée n'est possible que dans le mode console. Comment dois-je opérer dans le mode fenêtre, faut-il un gadget et lequel?
Merci et désolé de ne pas avoir vu une réponse sur l'aide ( à l'avenir comment procéder pour retrouver ce type d'information sur les "tutos pour débutant?)
Re: input inkey?
Publié : sam. 29/mai/2010 15:26
par jbernard13
bonjour
que veux tu faire ?
entré des données pour dessiné une courbe?
c'est pas "entré des données"
mais entrer des données
Re: input inkey?
Publié : sam. 29/mai/2010 15:38
par lepiaf31
Si tu veux entrer une valeur au clavier tu peux utiliser un StringGadget avec l'option #PB_String_Numeric pour ne pouvoir entrer que des valeurs numériques. Tu peux ensuite récupérer la valeur contenue dans le StringGadget avec la fonction GetGadgetText().
Sinon pour faire varier un paramètre de facon aisée tu peux utiliser le TrackBarGadget qui est une sorte de curseur que tu peux déplacer entre une valeur minimale et maximale. Tu peux récupérer cette valeur avec la fonction GetGadgetState().
Re: input inkey?
Publié : sam. 29/mai/2010 18:21
par Geo Trouvpatou
Salut.
J'ai repris un code auquel j'ai ajouté quelques commentaires pour que tu puisses mieux comprendre.
A toi de modifier cela.
Code : Tout sélectionner
; Codé par Dobro
; en purebasic 4.00
;- Window Constants
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#String_0
#Text_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
;If CreateGadgetList(WindowID(#Window_0))
StringGadget(#String_0, 50, 30, 150, 20, "",#PB_String_Numeric )
TextGadget(#Text_0, 50, 60, 140, 20, "Limité a 6 caracteres chiffre")
;EndIf
EndIf
EndProcedure
; On lance la procédure permettant d'ouvrir la fenêtre.
Open_Window_0()
Repeat ; Start of the event loop
Event = WaitWindowEvent() ;
WindowID = EventWindow() ;
GadgetID = EventGadget() ;
EventType = EventType() ;
;
If Event = #PB_Event_Gadget
; Dés qu'il y a un événement dans le StringGadget
If GadgetID = #String_0
; On récupère la valeur entrée dans le StringGadget
text$ = GetGadgetText(#String_0)
Debug text$
; Si la longueur du texte dans le StringGadget est supérieure à 6
; on empêche d'entrer un 7ème chiffre, mais on laisse la possibilité
; de modifier la valeur déjà entrée.
If Len( text$) > 6
text$ = Left(text$,6)
StringGadget(#String_0, 50, 30, 150, 20, "",#PB_String_ReadOnly|#PB_String_Numeric )
StringGadget(#String_0, 50, 30, 150, 20, "",#PB_String_Numeric )
SetGadgetText(#String_0, text$)
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
Re: input inkey?
Publié : lun. 31/mai/2010 18:08
par luciendorali
lepiaf31 a écrit :Si tu veux entrer une valeur au clavier tu peux utiliser un StringGadget avec l'option #PB_String_Numeric pour ne pouvoir entrer que des valeurs numériques. Tu peux ensuite récupérer la valeur contenue dans le StringGadget avec la fonction GetGadgetText().
Sinon pour faire varier un paramètre de facon aisée tu peux utiliser le TrackBarGadget qui est une sorte de curseur que tu peux déplacer entre une valeur minimale et maximale. Tu peux récupérer cette valeur avec la fonction GetGadgetState().
Bonjour et merci des conseils
Mais je n'aboutis toujours pas
Je précise le problème
Il s'agit d'un programme de visualisation de courbes( étude de chimie) destiné à initier les élèves à l'étude ( entre autre) des rôles des différents paramêtres dictant l'évolution du pH d'une solution.
Je dois préciser que j'obtiens bien une courbe qui se dessine lentement, comme souhaité, dans une fenêtre ( toute noire!) à l'aide d'un sprite ( un petit cercle faisant fonction de gros point
Je souhaiterais que l'utilisateur puisse faire varier le paramêtre( concentration par exemple) d'une façon discontinue ( disons trois valeurs au maximum) "concentration" pour voir l'effet produit sur la courbe
Il s'agira donc d'entrer une valeur au clavier Ca=???? et d'utiliser cette valeur dans la boucle qui permet de dessiner la courbe.
Je bute sur StringGadget qui pourtant me semble être opportun
Rien ne s'affiche!
Et de plus j'ignore tout de la façon de récupérer la valeur.
Je crains enfin que l'on ne puisse pas afficher de message dans la fenêtre de dessin.
S'il le faut, pour être plus "clair" je pourrais envoyer le code mais je ne sais pas comment opérer sur ce dernier point .
Merci
Re: input inkey?
Publié : lun. 31/mai/2010 19:22
par Backup
luciendorali a écrit :
S'il le faut, pour être plus "clair" je pourrais envoyer le code mais je ne sais pas comment opérer sur ce dernier point .
Merci
ha bah oui , c'est clair si tu sais pas faire un copier collé ! on est mal !

Re: input inkey?
Publié : lun. 31/mai/2010 19:23
par Geo Trouvpatou
J'ai dû poster en mode invisible.
Ou alors c'est le code de Dobro qui était trop pourrie et du coup, tu ne l'as pas compris (Ça doit plutôt être ça

)
Donc je te machouille encore plus la soluce, mais si tu n'as pas compris, alors demande plutôt une solution clé en main, parce que je ne vois pas comment faire plus simple

.
Ensuite pour mélanger une fenêtre et un environnement graphique, va voir dans les tutos.
Code : Tout sélectionner
Enumeration
#Window_0
;- Gadget Constants
#String_0
#Bouton
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 216, 0, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
StringGadget(#String_0, 50, 30, 150, 20, "45")
ButtonGadget(#Bouton, 50, 60, 140, 20, "Récupérer valeur du string")
EndIf
EndProcedure
; On lance la procédure permettant d'ouvrir la fenêtre.
Open_Window_0()
Repeat ; Start of the event loop
Event = WaitWindowEvent() ;
GadgetID = EventGadget() ;
;
If Event = #PB_Event_Gadget
; Dés qu'il y a un événement sur #Bouton
If GadgetID = #Bouton
; On récupère la valeur entrée dans le StringGadget
text$ = GetGadgetText(#String_0)
Debug text$
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
[EDIT]Zut! Dobro est là, je devrais retirer mon commentaire du début

Bon allez , direction les dents de la mer 4.