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?)
input inkey?
-
- Messages : 1501
- Inscription : dim. 18/avr./2004 15:04
- Localisation : sud de la france
Re: input inkey?
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
que veux tu faire ?
entré des données pour dessiné une courbe?
c'est pas "entré des données"
mais entrer des données
Jbernard13
-
- Messages : 510
- Inscription : dim. 25/mars/2007 13:44
- Localisation : Toulouse, France
- Contact :
Re: input inkey?
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().
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().
-
- Messages : 471
- Inscription : dim. 23/déc./2007 18:10
Re: input inkey?
Salut.
J'ai repris un code auquel j'ai ajouté quelques commentaires pour que tu puisses mieux comprendre.
A toi de modifier cela.
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
-
- Messages : 4
- Inscription : jeu. 11/févr./2010 11:13
Re: input inkey?
Bonjour et merci des conseilslepiaf31 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().
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?
ha bah oui , c'est clair si tu sais pas faire un copier collé ! on est mal !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

-
- Messages : 471
- Inscription : dim. 23/déc./2007 18:10
Re: input inkey?
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.
[EDIT]Zut! Dobro est là, je devrais retirer mon commentaire du début 
Bon allez , direction les dents de la mer 4.
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

Bon allez , direction les dents de la mer 4.