souci avec un gadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

souci avec un gadget

Message par dayvid »

pourquoi ce code ne marche pas ?
si je mets la commande "StringGadget" dans la boucle avec comme condition que des que la variable X est = à 1
faire apparaitre le StringGadget et remettre la variable X a 0 et que quand la touche entrer est pressé que celui-ci disparaisse

la sa marche mais si je laisse ça comme ça, ça bloc et plus rien ne marche
alors je me suis dit que il y avait un problème de canaux de communication entre le gadget et la fenêtre
mais pour tous dire, j'ai eu beaux chercher, je ne comprends vraiment pas d'où sa peut venir
bref ce code n’est que un exemple car le véritable problème étais lui dans mon programme
mais j’ai trouvé un moyen d’y remédier mais j’aurais aimé savoir pourquoi ceci ne fonctionnais pas


Code : Tout sélectionner

;- Window Constants
;
Enumeration
  #Window_0
  #a
EndEnumeration

Procedure s()
StringGadget(#a, 50, 20, 100, 20, "")
EndProcedure

Procedure Open_Window_0(a)
  If OpenWindow(#Window_0, 377, 177, 600, 300, "New window ( 0 )",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
   
  EndIf
  Repeat ; Start of the event loop
  
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadget() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_Event_Gadget
    
  EndIf
  
Until Event = #PB_Event_CloseWindow ; End of the event loop
EndProcedure




b = CreateThread(@Open_Window_0(), 0)
Delay(100)
s()

WaitThread(b)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: souci avec un gadget

Message par falsam »

Ne connaissant pas la finalité de ton programme, je n’émettrais aucun jugement sur ce code.


Pour répondre à ta question, la procédure Open_Window_0(a) ouvre ta fenêtre puis se met en boucle dans ton bloc d'instruction Repeat ... until ce qui empeche ta procedure s() de s'exécuter.

dayvid il serait temps d’arrêter de fumer ton clavier :p
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%
jbernard13
Messages : 1501
Inscription : dim. 18/avr./2004 15:04
Localisation : sud de la france

Re: souci avec un gadget

Message par jbernard13 »

et tes variables pourquoi tu l'as pas declarées?
Jbernard13
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: souci avec un gadget

Message par Backup »

falsam a écrit :dayvid il serait temps d’arrêter de fumer ton clavier :p
et de changer de hobby, celui ci te conviendra mieux, je pense :
http://gilles-et-martine.pagesperso-ora ... /tour.html

:)
Avatar de l’utilisateur
kernadec
Messages : 1606
Inscription : ven. 25/avr./2008 11:14

Re: souci avec un gadget

Message par kernadec »

:mrgreen:
pat
Messages : 411
Inscription : mar. 24/nov./2009 15:13

Re: souci avec un gadget

Message par pat »

Pour essayer de répondre à dayvid.
Je trouve ton programme très mal structuré et on ne sait pas ce que tu veux faire.
Supprime le thread qui semble inutile.
Dans ce cas, si tu supprimes le thread, tu pourras également supprimer le paramètre (a) de la procédure Open_Window_0(a).
Essaie de mettre le String-gadget dans la fenêtre.
Les noms de variables sont absolument pas clairs et se confondent avec les mots-clés PureBasic.
La boucle Repeat Until semble inutile.
Bref, tout à revoir et regarde dans le forum les exemples fournis.
Tu as du travail à faire pour t'améliorer.
Mais tu peux faire ce que tu veux si tu fais quelques efforts. :|
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: souci avec un gadget

Message par Warkering »

Il ne faut pas placer de telle boucle dans une procédure! :lol:
Tu peux, mais dans ce cas précis, c'est un peu con.
Normalement, un programme est géré par une seule grande boucle, habituellement situé à la fin de ton code ou bien dans un fichier principal final séparé. Ensuite, selon les évènements reçus par la fenêtre, on exécute les différentes fonctionnalités.
Le Thread, quant à lui, est complètement inutile. Je ne vois pas son intérêt dans le code. Vire-le.
Pour le nom des variables, procédures et tout ce qui peut être nommé en PureBasic, pense à utiliser des noms plus ... disons ... pratiques.
La procédure 's' par exemple, en plus d'être inutile, est un très bon exemple de ce qu'il ne faut pas faire. Ici, un bon nom aurait été "CreateStringGadget" ou bien "CreerBoiteDeTexte". Soit un peu plus constructif car là, c'est un bordel!
En tout cas, il y a place à amélioration, mais bon. Lâche pas! :roll:
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: souci avec un gadget

Message par Ulix »

@dayvid

Je pense que tu manque de rigueur ! C'est une critique constructive que je te fais, ne le prend pas mal !

Comme le disais "pat" ton programme est très mal structuré et on ne sait pas ce que tu veux faire.

Aussi te faudrait-il un modèle. Comme il a été dit, je ne sais pas ce que tu veux faire, alors j'ai inventé.

Regard un peu le code et repaire les différentes sections. Attention ce code n'est qu'un exemple,
il n'est pas a prendre au pied de la lettre, juste pour comprendre les différentes parties. :wink:

Code : Tout sélectionner

Enumeration
;---------La fenétre principale
 #f0
;---------Les gadget de la fenétre
#String1
#BoutonQuitter
;..... etc

;---------Mon menu
#f0Menu
#MenuNouveau:#MenuOuvrir:#MenuQuitter

;---------Ma barre d'état
#f0BarreEtat

EndEnumeration


;Section déclaration des structures


;Section déclaration des variables, listes... etc
EnableExplicit	;  <======== Important

Global  Quitter_f0.b
 

  
;Section déclaration des procédures
Declare FenetreCreation()
Declare FichierNouveau()
Declare FichierOuvrir()
Declare FenetreQuitter()


;====================================================================================================
;Début du programme proprement dit
;--------Lecture du fichier init

;--------Création et ouverture de la fenétre principale
FenetreCreation()

;--------Initialisation des gadgets, listes... etc

;Affichage de la fenétre principale
HideWindow(#f0, 0)


;Boucle principale du programme
Repeat
Select WaitWindowEvent()

      	Case #PB_Event_Menu
			        	Select EventMenu() 
					Case #MenuNouveau			:	FichierNouveau()
					Case #MenuOuvrir				:	FichierOuvrir()
					; .....
   					Case #MenuQuitter				:	FenetreQuitter()
			          	EndSelect
		
		Case #PB_Event_Gadget
					Select EventGadget()
					Case #BoutonQuitter			:	FenetreQuitter()
					Case #String1					
					EndSelect
      	
		Case #PB_Event_CloseWindow				:	FenetreQuitter()
EndSelect
Until Quitter_f0 = 1
;Sortie du programme
End

;====================================================================================================
;Ici toutes les procédures...

Procedure FenetreCreation()

If OpenWindow(#f0, 377, 177, 600, 300, "Fenétre Principale)",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar|#PB_Window_Invisible) 

	
			;Mes gadgets   	
			StringGadget( #String1, 			50,  20,  100,  20, "")
			
			ButtonGadget(#BoutonQuitter, 	200,   180, 150,   50, "Quitter")
			;..... et les autres

; Menu principal
If CreateMenu(#f0Menu, WindowID(#f0))
MenuTitle("Fichier")
		MenuItem( #MenuNouveau, 			"N&ouveau"+ #TAB$ + "Alt+N")
		MenuItem( #MenuOuvrir, 			"O&uvrir"+ #TAB$ + "Alt+O")
      	;.....
      	MenuBar()
      	;.....
        	MenuBar()
      	MenuItem( #MenuQuitter, 			"Q&uitter"+ #TAB$ + "Alt+Q")

;Les touches raccourcis clavier...
AddKeyboardShortcut(#f0, #PB_Shortcut_Alt | #PB_Shortcut_N, #MenuNouveau)
AddKeyboardShortcut(#f0, #PB_Shortcut_Alt | #PB_Shortcut_Q, #MenuQuitter)
;Grisés les menus 

EndIf

; Barre d'état
If CreateStatusBar(#f0BarreEtat, WindowID(#f0))
		AddStatusBarField(#PB_Ignore)
EndIf




Else	;Ici je suis en echec
		;peu probable, mais...
		MessageRequester("ERREUR", "Désolé, il est impossible d'ouvrir .... !",0)
EndIf
EndProcedure

Procedure FenetreQuitter()

MessageRequester("Quitter", "Ici confirmer la fin du programme", 0)

Quitter_f0 = 1


EndProcedure

Procedure FichierNouveau()

MessageRequester("Nouveau", "Ici le menu Nouveau", 0)

EndProcedure

Procedure FichierOuvrir()

MessageRequester("Ouvrir", "Ici le menu Ouvrir", 0)

EndProcedure

J'espéres que cela te donnera des idées, de comment organisé ton programme, a toi d'y mettre ce que tu veux !

A+
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: souci avec un gadget

Message par Warkering »

Je ne vois pas pourquoi le EnableExplicit serait très important ici. Je ne m'en sert jamais et j'en suis pas mort! :lol:
boddhi
Messages : 604
Inscription : lun. 26/avr./2010 16:14
Localisation : S 48° 52' 31'' / O 123° 23' 33''

Re: souci avec un gadget

Message par boddhi »

Warkering a écrit :Je ne vois pas pourquoi le EnableExplicit serait très important ici. Je ne m'en sert jamais et j'en suis pas mort! :lol:
Pas indispensable, certes, mais cela évite, parfois ou assez souvent (c'est selon) des erreurs de frappe dans les noms de variables, surtout lorsque l'on est débutant et un peu fouilli (ce qui semble être un peu le cas ici, non ? :wink: ).

Ca semble être déjà une galère pour mettre les instructions dans le bon ordre alors, si en plus, il faut y rajouter des erreurs incongrues à cause des noms de variables... houille, houille, mazout !!! :lol:
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: souci avec un gadget

Message par Warkering »

C'est vrai que c'est une bonne idée pour les débutants. Je n'ai jamais utilisé de tel mécanisme, peut-être parce que je suis trop intelligent! :mrgreen:
Nan, sérieux, j'ai commencé sur le Html pas longtemps et ensuite direct sur le C donc quand j'ai tombé sur le Basic, j'ai remercié Jésus. :P
Faire ses déclarations après la séance "J'ai toute mon idée en tête!" est trop plaisante.
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: souci avec un gadget

Message par dayvid »

Merci tous le monde pour vos réponce :D

Ulix, grand merci pour ton code d'éxemple, j'étudirais sa
mais si j'ai voulue faire sa, c'est toujour pour simuler un input le plus vérritable possible dans un editor gadget
mais a l'heur qu'il est j'ai presque reussi, si si !

mais il me manque encore deux trois petite chose importante
a bientôt sur la chaine des débutant en pure basic :)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: souci avec un gadget

Message par Ar-S »

En attendant je t'avais donné des exercices à faire, tu as vite abandonné, et c'est là ton problème principal. Tu manques cruellement de patience. A l'heure d'aujourd'hui, je n'ai plus le temps ni l'envie de "perdre" ce temps à essayer de te faire avancer.
ça reviendra peut-être un jour... ou pas.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: souci avec un gadget

Message par dayvid »

Ar-s mon ami, je n'est pas du tous abandonner :D

mais je t'avoue que ces dernier temps ayant plus internet
je n'y est plus pensser et j'avais d'autre chose a faire voila tous, ne te vexe pas :)
mais ne t'inkiette pas, je reprendrais aussi vite que j'ai arrèter, je verrais plus tard 8)
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: souci avec un gadget

Message par case »

a noter que le monde ne tourne pas autour de toi et qu'AR-S n'est pas a ton service donc quand TU voudra reprendre c'est pas sur que LUI veuille continuer ne t'en vexe pas , c'est tout a fait normal
dans le cas ou il ferais cet effort je ne pourrais que lui tirer mon chapeau. bon courage pour la suite en tout cas.
ImageImage
Répondre