Petit soucis avec mon code

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
grendizer
Messages : 59
Inscription : mer. 29/mai/2019 6:29

Petit soucis avec mon code

Message par grendizer »

Bonjour je suis entrain de codé un petit logiciel pour la gestion de poids , je rencontre un petit problème c'est quand j'ouvre la fenêtre
Ajouter , je rentre la date et le poids je clique valider et ça ferme ma fenêtre mais si je clique sur annule la fenêtre Ajouter je ferme pas
je sais que c'est dans repent et until qu'il manque quelque chose j'ai pas l'habitude d'utiliser Bind.

Code : Tout sélectionner

;*** Gertrude
EnableExplicit

;-- Fenetres 
Enumeration Windows 
  #main_Form
  #form_Ajoute
EndEnumeration

;-- Gadgets
Enumeration
  #list_Poids
  #b_Ajouter
  #b_Valider
  #b_Annuler
  #text_Date
  #text_Poids
  #champ_Date
  #champ_Poids
  #cadre
EndEnumeration
;-- Variables diverses 
Global fermer
;-- Liste pour ajouter une date et un poids
Structure Gestion
  Date.s
  Poids.s
EndStructure
Global NewList Poids.Gestion()

;-- Procedure pour quitter le logiciel 
Procedure evClose()
  fermer = EventWindow()
  CloseWindow(fermer)
  If fermer = #main_Form
    End
  EndIf
EndProcedure

;-- Procedure ajoute une date et un poids
Procedure.b ajoute_Poids()
  LastElement(Poids())
If AddElement(Poids())
    Poids()\Date=GetGadgetText(#champ_Date)
    Poids()\Poids=GetGadgetText(#champ_Poids)
    AddGadgetItem(#list_poids,-1,Poids()\Date+Chr(10)+Poids()\Poids+Chr(10))
EndIf     
  ProcedureReturn
EndProcedure



;-- Procedure des fenetres 
;-- Fenetre pour ajouter une date et un poids
Procedure Ajouter()
  OpenWindow(#form_Ajoute,0,0,320,330,"Ajouter une pesée ",#PB_Window_TitleBar|#PB_Window_ScreenCentered)
FrameGadget(#cadre,10,10,300,250,"")
  TextGadget(#text_Date,90,70,120,30,"Date --> J/M/A :",#PB_Text_Center)
StringGadget(#champ_Date,45,90,220,20,"")
TextGadget(#text_Poids,90,150,120,30,"Poids :",#PB_Text_Center)
StringGadget(#champ_Poids,45,170,220,20,"")
ButtonGadget(#b_Valider,20,280,100,30,"Valider")
ButtonGadget(#b_Annuler,200,280,100,30,"Annuler")

BindGadgetEvent(#b_Valider,@ajoute_Poids())
BindEvent(#PB_Event_CloseWindow,@evClose(),#form_Ajoute)
   
EndProcedure
;-- Principale 
Procedure Main()
    OpenWindow(#main_Form,0,0,800,600,"Gertrude",#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
    ListIconGadget(#list_poids,100,100,600,280,"Date :",300,#PB_ListIcon_GridLines|#PB_ListIcon_CheckBoxes)
      AddGadgetColumn(#list_poids,1,"Poids:",200)
    BindEvent(#PB_Event_CloseWindow,@evClose(),#main_Form)
   
  ButtonGadget(#b_Ajouter,30,10,120,30,"Ajouter un poids")
  BindGadgetEvent(#b_Ajouter,@Ajouter())
  
EndProcedure


;-- Boucle du programme 
Main()


Repeat    
  If WaitWindowEvent() = #PB_Event_Gadget And EventGadget() = #b_Valider 
          evClose()
EndIf

  
  
 ForEver 








Avatar de l’utilisateur
Guillot
Messages : 522
Inscription : jeu. 25/juin/2015 16:18

Re: Petit soucis avec mon code

Message par Guillot »

t'as oublié le bindgadgetevent sur le bouton 'annuler'

j'ai fais 2 autres modifs (fermeture de la fenetre apres ajout, et juste waitwindowevent() dans la 'Boucle du programme ')

Code : Tout sélectionner

;*** Gertrude
EnableExplicit

;-- Fenetres 
Enumeration Windows 
	#main_Form
	#form_Ajoute
EndEnumeration

;-- Gadgets
Enumeration
	#list_Poids
	#b_Ajouter
	#b_Valider
	#b_Annuler
	#text_Date
	#text_Poids
	#champ_Date
	#champ_Poids
	#cadre
EndEnumeration
;-- Variables diverses 
Global fermer
;-- Liste pour ajouter une date et un poids
Structure Gestion
	Date.s
	Poids.s
EndStructure
Global NewList Poids.Gestion()

;-- Procedure pour quitter le logiciel 
Procedure evClose()
	fermer = EventWindow()
	CloseWindow(fermer)
	If fermer = #main_Form
		End
	EndIf
EndProcedure

;-- Procedure ajoute une date et un poids
Procedure.b ajoute_Poids()
	LastElement(Poids())
	If AddElement(Poids())
		Poids()\Date=GetGadgetText(#champ_Date)
		Poids()\Poids=GetGadgetText(#champ_Poids)
		AddGadgetItem(#list_poids,-1,Poids()\Date+Chr(10)+Poids()\Poids+Chr(10))
	EndIf    
	CloseWindow(#form_Ajoute)
	ProcedureReturn
EndProcedure



;-- Procedure des fenetres 
;-- Fenetre pour ajouter une date et un poids
Procedure Ajouter()
	OpenWindow(#form_Ajoute,0,0,320,330,"Ajouter une pesée ",#PB_Window_TitleBar|#PB_Window_ScreenCentered)
	FrameGadget(#cadre,10,10,300,250,"")
	TextGadget(#text_Date,90,70,120,30,"Date --> J/M/A :",#PB_Text_Center)
	StringGadget(#champ_Date,45,90,220,20,"")
	TextGadget(#text_Poids,90,150,120,30,"Poids :",#PB_Text_Center)
	StringGadget(#champ_Poids,45,170,220,20,"")
	ButtonGadget(#b_Valider,20,280,100,30,"Valider")
	ButtonGadget(#b_Annuler,200,280,100,30,"Annuler")
	
	BindGadgetEvent(#b_Valider,@ajoute_Poids())
	BindGadgetEvent(#b_Annuler,@evClose())
	BindEvent(#PB_Event_CloseWindow,@evClose(),#form_Ajoute)
	
EndProcedure
;-- Principale 
Procedure Main()
	OpenWindow(#main_Form,0,0,800,600,"Gertrude",#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
	ListIconGadget(#list_poids,100,100,600,280,"Date :",300,#PB_ListIcon_GridLines|#PB_ListIcon_CheckBoxes)
	AddGadgetColumn(#list_poids,1,"Poids:",200)
	BindEvent(#PB_Event_CloseWindow,@evClose(),#main_Form)
	
	ButtonGadget(#b_Ajouter,30,10,120,30,"Ajouter un poids")
	BindGadgetEvent(#b_Ajouter,@Ajouter())
	
EndProcedure

;-- Boucle du programme 
Main()
Repeat    
	WaitWindowEvent()
ForEver 
Avatar de l’utilisateur
grendizer
Messages : 59
Inscription : mer. 29/mai/2019 6:29

Re: Petit soucis avec mon code

Message par grendizer »

Merci Mon ami , petit soucis en Ligne 62 :

Code : Tout sélectionner

 AddGadgetItem(#list_poids,-1,Poids()\Date+Chr(10)+Poids()\Poids+Chr(10))
Pb me dit que le gadget n'est pas Initialiser la ligne 62 se trouve dans la procedure pour charger le fichier. je comprend pas c'est la meme ligne que dans la procedure ajoute_Poids() .

Code : Tout sélectionner

;*** Gertrude
EnableExplicit

;-- Fenetres 
Enumeration Windows 
	#main_Form
	#form_Ajoute
EndEnumeration

;-- Gadgets
Enumeration
	#list_Poids
	#b_Ajouter
	#b_Sauver
	#b_Valider
	#b_Annuler
	#text_Date
	#text_Poids
	#champ_Date
	#champ_Poids
	#cadre
	#file
EndEnumeration
;-- Variables diverses 
Global fermer
;-- Liste pour ajouter une date et un poids
Structure Gestion
	Date.s
	Poids.s
EndStructure
Global NewList Poids.Gestion()

;-- Procedure pour quitter le logiciel 
Procedure evClose()
	fermer = EventWindow()
	CloseWindow(fermer)
	If fermer = #main_Form
		End
	EndIf
EndProcedure

;-- Procedure ajoute une date et un poids
Procedure.b ajoute_Poids()
	LastElement(Poids())
	If AddElement(Poids())
		Poids()\Date=GetGadgetText(#champ_Date)
		Poids()\Poids=GetGadgetText(#champ_Poids)
		AddGadgetItem(#list_poids,-1,Poids()\Date+Chr(10)+Poids()\Poids+Chr(10))
	EndIf    
	CloseWindow(#form_Ajoute)
	ProcedureReturn
EndProcedure
;-- Procedure pour Charger la liste au demarrage du programme
Procedure Charger()
  If OpenFile(#file,"Peser.dat")<> 0
    ResetList(Poids())
    OpenFile(#file,"Peser.dat")
    While Eof(#file)=0
      If AddElement(Poids())
        Poids()\Date=ReadString(#file) 
        Poids()\Poids=ReadString(#file) 
     	AddGadgetItem(#list_poids,-1,Poids()\Date+Chr(10)+Poids()\Poids+Chr(10))
        EndIf
       Wend
     CloseFile(#file)
   EndIf   
 EndProcedure

;--Procedure de sauvegarde du fichier
Procedure Sauver()
  ResetList(Poids())
  CreateFile(#file,"Peser.dat")
  ForEach Poids()
    WriteStringN(#file,Poids()\Date)
    WriteStringN(#file,Poids()\Poids)
  Next 
  CloseFile(#file)
  
  
  
EndProcedure
 
;-- Fenetre pour ajouter une date et un poids
Procedure Ajouter()
	OpenWindow(#form_Ajoute,0,0,320,330,"Ajouter une pesée ",#PB_Window_TitleBar|#PB_Window_ScreenCentered)
	FrameGadget(#cadre,10,10,300,250,"")
	TextGadget(#text_Date,90,70,120,30,"Date --> J/M/A :",#PB_Text_Center)
	StringGadget(#champ_Date,45,90,220,20,"")
	TextGadget(#text_Poids,90,150,120,30,"Poids :",#PB_Text_Center)
	StringGadget(#champ_Poids,45,170,220,20,"")
	ButtonGadget(#b_Valider,20,280,100,30,"Valider")
	ButtonGadget(#b_Annuler,200,280,100,30,"Annuler")
	
	BindGadgetEvent(#b_Valider,@ajoute_Poids())
	BindGadgetEvent(#b_Sauver,@Sauver())
	BindGadgetEvent(#b_Annuler,@evClose())
	BindEvent(#PB_Event_CloseWindow,@evClose(),#form_Ajoute)
	
EndProcedure
;-- Principale 
Procedure Main()
	OpenWindow(#main_Form,0,0,800,600,"Gertrude",#PB_Window_SystemMenu|#PB_Window_TitleBar|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered)
	ListIconGadget(#list_poids,100,100,600,280,"Date :",300,#PB_ListIcon_GridLines|#PB_ListIcon_CheckBoxes)
	AddGadgetColumn(#list_poids,1,"Poids:",200)
	BindEvent(#PB_Event_CloseWindow,@evClose(),#main_Form)
	ButtonGadget(#b_Ajouter,30,10,120,30,"Ajouter un poids")
	ButtonGadget(#b_Sauver,250,10,120,30,"Sauvegarder")
	BindGadgetEvent(#b_Ajouter,@Ajouter())
	
EndProcedure

;-- Boucle du programme 
Charger()
Main()
Repeat    
	WaitWindowEvent()
ForEver 
Avatar de l’utilisateur
Guillot
Messages : 522
Inscription : jeu. 25/juin/2015 16:18

Re: Petit soucis avec mon code

Message par Guillot »

ben oui,
faut executer la procedure "charger" apres la procedure "main" (dans laquelle tu initialise les gadgets)
Avatar de l’utilisateur
grendizer
Messages : 59
Inscription : mer. 29/mai/2019 6:29

Re: Petit soucis avec mon code

Message par grendizer »

Merci j'avais pas penser à ça
Répondre