RESOLU pb de validation avec la touche entrée sur TreeGadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Malo
Messages : 79
Inscription : dim. 09/août/2009 17:48

RESOLU pb de validation avec la touche entrée sur TreeGadget

Message par Malo »

Bonjour

fonctionnement de ce code :

quand on clic sur une branche du TreeGadget "Petite Fille ..." ou "Arr Petite Fille..."
un StringGadget apparait pour saisir une quantité ainsi qu'un TextGadget et , et en validant avec Return,
la branche sélectionnée change de texte et de couleur et le TextGadget également.


Le problème est que cela ne fonctionne pas toujours correctement.Quand je fais plusieurs saisies
à suivre sur des branches différentes, Je suis obligé assez souvent d'appuyer plusieurs fois sur
la touche Entrée pour valider le fonctionnement.

J'ai constaté également que je suis également obligé de cliquer plusieurs fois sur la croix rouge
pour fermer la fenêtre.

Avez vous une idée sur ces dysfonctionnements?
Merci par avance pour vos réponses

Code : Tout sélectionner

;PB 4.51


Enumeration
	#fenet
	#Bord
	#Text
	#TextSaisie
	#Saisie
	#Valider
	#Supprimer
	#Save
	#Return
EndEnumeration

;Global NewList Article.s()

Global couleurs=RGB($0,$0,$FF)
Global couleurs2=RGB($FF,$0,$AD)
Global couleurs3=RGB($CC,$FF,$FF)
Global couleurs4=RGB($FF,$FF,$FF)
Global leTexte$=""
Global element

Procedure Fenetre_Principale()
    If OpenWindow(#fenet, 0, 0, 600, 600, "TreeGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
        TreeGadget(#Bord, 10, 110, 550, 450 ,#PB_Tree_AlwaysShowSelection) 
        TextGadget(#Text, 10, 20,400, 90,leTexte$  )
        SetGadgetColor(#Text,  #PB_Gadget_FrontColor,Couleurs  )
        AddKeyboardShortcut(#fenet, #PB_Shortcut_Return, #Return);100
	
        AddGadgetItem (#Bord, -1, "Mére A",0,0)
        AddGadgetItem (#Bord, -1, "Fille A1",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille A1.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A1.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A1.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A1.4",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A1.5",0,2)
        AddGadgetItem (#Bord, -1, "Fille A2",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille A2.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A2.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A2.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A2.4",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A2.5",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille A2.6",0,2)
        AddGadgetItem (#Bord, -1, "Mére B",0,0)
        AddGadgetItem (#Bord, -1, "Fille B1",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille B1.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B1.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B1.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B1.4",0,2)
        AddGadgetItem (#Bord, -1, "Fille B2",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille B2.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B2.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B2.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B2.4",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B2.5",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B2.6",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B2.7",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B2.8",0,2)
        AddGadgetItem (#Bord, -1, "Fille B3",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.4",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.5",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.6",0,2)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.1",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.2",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.3",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.4",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.5",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.6",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.7",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.8",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.9",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.10",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.11",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille B3.6.12",0,3)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.7",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.8",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.9",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.10",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.11",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.12",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.13",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.14",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.15",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.16",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.17",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.18",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille B3.19",0,2)
        AddGadgetItem (#Bord, -1, "Mére C",0,0)
        AddGadgetItem (#Bord, -1, "Fille C1",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille C1.1",0,2)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.1",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.2",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.3",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.4",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.5",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.6",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.7",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.8",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.9",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.10",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.11",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.12",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.13",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.14",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.15",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.16",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.17",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.18",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.19",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.20",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.21",0,3)
        AddGadgetItem (#Bord, -1, "Arr Petite Fille C1.1.22",0,3)
        AddGadgetItem (#Bord, -1, "Petite Fille C1.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C1.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C1.4",0,2)
        AddGadgetItem (#Bord, -1, "Fille C2",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille C2.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C2.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C2.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C2.4",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C2.5",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C2.6",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C2.7",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C2.8",0,2)
        AddGadgetItem (#Bord, -1, "Fille C3",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille C3.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C3.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C3.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C3.4",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C3.5",0,2)
        AddGadgetItem (#Bord, -1, "Fille C4",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.4",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.5",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.6",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.7",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.8",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.9",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.10",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.11",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C4.12",0,2)
        AddGadgetItem (#Bord, -1, "Fille C5",0,1)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.1",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.2",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.3",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.4",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.5",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.6",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.7",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.8",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.9",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.10",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.11",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.12",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.13",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.14",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.15",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.16",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.17",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.18",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.19",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.20",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.21",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.22",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.23",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.24",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.25",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.26",0,2)
        AddGadgetItem (#Bord, -1, "Petite Fille C5.27",0,2)
        
        	
        ;nbItem=CountGadgetItems(#Bord)
        
    
    EndIf
EndProcedure

Procedure LesArticles()
    element=GetGadgetState(#Bord)
    leTexte$=  GetGadgetItemText(#Bord, element )
    If CreateRegularExpression(0, "\.[0-9]")
 	    If MatchRegularExpression(0, leTexte$)
 		    SetGadgetText(#Text,leTexte$)
			SetGadgetColor(#Text,  #PB_Gadget_FrontColor,Couleurs  )
			StringGadget(#Saisie,460,20,70,30,laSaisie$,#PB_String_Numeric   )
			TextGadget(#TextSaisie,420,20,40,30,"qt")
			SetActiveGadget(#Saisie)
			If LoadFont(1, "Arial", 14) 
			    SetGadgetFont(#Saisie, FontID(1))  
			    SetGadgetFont(#TextSaisie, FontID(1))  
            EndIf 

		Else
	    	FreeGadget(#Saisie)
			FreeGadget(#TextSaisie)
			If Len(leTexte$) >85
			    SetGadgetText(#Text,leTexte$)
			Else
				leTexte$=""
				SetGadgetText(#Text,leTexte$)
			EndIf
				     				
		EndIf
	EndIf 
EndProcedure


Procedure Valider_Saisie()
    remplace$="X_  "+leTexte$+"  Qt  "+GetGadgetText(#Saisie)
	SetGadgetItemText(#Bord,element,remplace$)
	SetGadgetItemColor(#Bord,  element, #PB_Gadget_FrontColor,couleurs2  )
	SetGadgetText(#Text,remplace$)
	SetGadgetColor(#Text, #PB_Gadget_FrontColor,couleurs2  )
  EndProcedure

Fenetre_Principale()

 ;****************************************************************************************	
Repeat 
evenement = WaitWindowEvent()
Select  evenement
        
    Case #PB_Event_Menu
 	    Select EventMenu()
 	 	    Case #Return;100
 	 		    Valider_Saisie()
 	 	EndSelect
 	 		
 	 				
 	Case #PB_Event_Gadget
     	Select EventGadget()
     		Case #Bord
     			LesArticles()
			EndSelect
	EndSelect
	
Until WaitWindowEvent() = #PB_Event_CloseWindow

Dernière modification par Malo le jeu. 25/août/2011 0:00, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: pb de validation avec la touche entrée sur TreeGadget

Message par falsam »

Remplace

Code : Tout sélectionner

Until WaitWindowEvent() = #PB_Event_CloseWindow
par

Code : Tout sélectionner

Until evenement=#PB_Event_CloseWindow
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%
Malo
Messages : 79
Inscription : dim. 09/août/2009 17:48

Re:RESOLU pb de validation avec la touche entrée sur TreeGad

Message par Malo »

Merci falsam , cela fonctionne beaucoup mieux maintenant
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: pb de validation avec la touche entrée sur TreeGadget

Message par graph100 »

La commande waitwindowevent() prend un évènement de la pile d’évènement (là ou il sont stockés) et le retourne en résultat.
Donc tu dois traiter chaque valeur retournée par cette commande (comme windowevent() d'ailleur) de manière à ne pas rater d'event !!

La solution la plus simple, et largement répandu est de stocker la valeur retournée par ces commandes une seule fois dans la boucle principale.
Un gros un tour de la boucle principale traite un évènement de la pile. A chaque fois que tu veux savoir ce qu'il se passe tu utilises la variable dans laquelle tu as stocké l'event courant.

aller bon courage,
en espérant avoir apporté une lumière ;)
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Malo
Messages : 79
Inscription : dim. 09/août/2009 17:48

Re: pb de validation avec la touche entrée sur TreeGadget

Message par Malo »

Merci graph100 pour tes conseils éclairés.
Il est vrai que pour tester le TreeGadget j'avais copié l'exemple de la doc, que j'avais remanier
pour mes besoins sans pour autant remettre en cause la fermeture de la fenêtre.
Répondre