input inkey?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
luciendorali
Messages : 4
Inscription : jeu. 11/févr./2010 11:13

input inkey?

Message 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?)
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: input inkey?

Message 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
Jbernard13
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: input inkey?

Message 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().
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: input inkey?

Message 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
luciendorali
Messages : 4
Inscription : jeu. 11/févr./2010 11:13

Re: input inkey?

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: input inkey?

Message 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 ! :lol:
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Re: input inkey?

Message 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 :mrgreen:)

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 :lol:.

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 :lol:
Bon allez , direction les dents de la mer 4.
Répondre