Bouton depuis formulaire qui se trompe de procédure.

Codes specifiques à Windows
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Bouton depuis formulaire qui se trompe de procédure.

Message par hub73 »

Bonjour à vous.

Un bug que je traîne dans tous mes logiciels de gestion de la webradio. L'appel à une mauvaise procédure lorsque je clique sur un gadget button depuis un formulaire, bouton 'valider' ou 'annuler' par exemple. Et je ne trouve pas les raisons de cette bizarrerie. C'est comme si le #Pb_any était aussi associé à un autre bouton ! La plupart du temps çà fonctionne et quelquefois ca bogue ! Bug aléatoire donc.

J'utilise plusieurs fichiers formulaires 'form' et à chaque fois je coche bien #Pb_any dans les propriétés de chaque élément, histoire que PB génère un identifiant unique.

Code : Tout sélectionner

	    Case #PB_Event_Gadget 
	      Select EventGadget()
	        Case Button_un
	           Ouvrir_fenetre_un()
	        Case Button_deux
	           Ouvrir_fenetre_deux()
	        Case Button_valider_un
	           Fermer_fenetre_un(1)
	        Case Button_annuler_un
	           Fermer_fenetre_un(2)
	      EndSelect
           ..
Avez-vous déjà rencontré une telle erreur ? Quelque chose m'échappe. Quel tests/vérifications pourrais-je faire pour comprendre le soucis ?

Si j'utilise 5 fomulaires et que j'ai coché #Pb_any pour tous ses gadgets, PB attribue t-il une valeur unique pour chaque élément ? Ou il attribue uniquement une valeur unique d'élement dans chaque formulaire sans se soucier des autres ?

Autre chose, je décoche pour chaque formulaire l'option 'Générer la procédure d'évènements'

Merci à vous.
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Bouton depuis formulaire qui se trompe de procédure.

Message par Marc56 »

En principe avec #PB_Any les numéros sont uniques.
Dixit la doc, on peut mélanger les ID dynamiques et ceux énumérés.

Une bonne méthode est d'utiliser le plus souvent des Debug (à l'appel de procédure et à l'ouverture)
Pour le faire en mode compilé, on remplace les Debug par des écritures dans un Log

Code : Tout sélectionner

...
	Case Button_deux
	 	Debug ">> Ouvrir_fenetre_deux()"
		Ouvrir_fenetre_deux()
		
	Case Button_valider_un
		Debug " >> Fermer_fenetre_un(1)"
		Fermer_fenetre_un(1)
...
Nommer les gadgets en fonction des fenêtres facilite aussi le repérage
Je fais par exemple comme ceci dans les applis multi-fenêtre:
(Objet_Fenêtre_Action)
Ex:
Btn_WinMain_Open
Btn_WinMain_Close
Btn_WinSetup_Open
etc

Autre méthode, utiliser le mode pas-a-pas. Poser des points d'arrêt (F9) aux endroits stratégiques.
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Bouton depuis formulaire qui se trompe de procédure.

Message par venom »

Bonjour,

Personnellement je fait comme Marc56, je met mes propres nom en fonction des fenêtres si il y en a plusieurs. C'est d'ailleurs mieux pour s'y retrouver. C'est mon point de vue.

Même si #Pb_any est sensé faire le taf.

J'utilise #Pb_any a la rigueur pour des petits projets à la va vite.







@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
hub73
Messages : 126
Inscription : sam. 16/janv./2021 20:17

Re: Bouton depuis formulaire qui se trompe de procédure.

Message par hub73 »

Merci. En fait je fais comme vous. J'avais simplifié sur l'exemple. Ce doit être une coquille qqpart dans mon code que je trouverai un jour !
Dans tous mes projets j'utilise un log pour tracer les erreurs en plus du traditionnel debug.
J'avais un doute sur les pb_any.
Répondre