[Résolu] Pas de closeGadget() ??
[Résolu] Pas de closeGadget() ??
Hello,
Je viens de réaliser qu'il n'y a pas de fonction pour fermer un gadget?!? On peut en créer dans le code mais pas les supprimer?
Comment on fait quand on a besoin d'afficher à la volée un nombre variable de gadgets?
Je viens de réaliser qu'il n'y a pas de fonction pour fermer un gadget?!? On peut en créer dans le code mais pas les supprimer?
Comment on fait quand on a besoin d'afficher à la volée un nombre variable de gadgets?
Dernière modification par cowpowah le jeu. 20/sept./2018 10:15, modifié 1 fois.
Re: Pas de closeGadget() ??
FreeGadget()cowpowah a écrit : Je viens de réaliser qu'il n'y a pas de fonction pour fermer un gadget?!? On peut en créer dans le code mais pas les supprimer?
Re: Pas de closeGadget() ??
Pff... J'ai plus les yeux en face des trous... Le pire c'est que j'ai cherché pendant une bonne 1/2 heure!
Merci Marc!
Ça fonctionne comme ça?
Merci Marc!
Ça fonctionne comme ça?
Code : Tout sélectionner
nomGadget = TextGadget(#PB_any, X, Y, Largeur, Hauteur, Texte$)
FreeGadget(nomGadget)
Re: Pas de closeGadget() ??
Oui,
et pour éviter les IMA (si le gadget n'existe plus), on peut le tester avant:
et pour éviter les IMA (si le gadget n'existe plus), on peut le tester avant:
Code : Tout sélectionner
If IsGadget(nomGadget) : FreeGadget(nomGadget) : EndIf
Re: [Résolu] Pas de closeGadget() ??
Ok, bon à savoir, merci du tuyau
Au passage, peut-être que tu sais comment faire un nom de variable itératif?
Au passage, peut-être que tu sais comment faire un nom de variable itératif?
Code : Tout sélectionner
for i=0 to 3
(variable+i).s = blahblah
next
Re: [Résolu] Pas de closeGadget() ??
avec des macrocowpowah a écrit :Ok, bon à savoir, merci du tuyau
Au passage, peut-être que tu sais comment faire un nom de variable itératif?
Code : Tout sélectionner
for i=0 to 3 (variable+i).s = blahblah next
Code : Tout sélectionner
Macro variable(num):mavariable_#num:EndMacro
For i = 0 To 100
variable(i) = i
Next
Debug mavariable_0
Debug mavariable_i
Re: [Résolu] Pas de closeGadget() ??
Merci G-Rom!
En regardant comment fonctionne ta macro, je me suis rendu compte que ça fonctionne aussi tout simplement comme ça:
Je suppose que c'est le caractère _ (touche '8') à la fin d'une variable qui permet... bah de lui coller une autre variable au c*l! C'est quand même sacrement bien foutu le PureBasic! Le fichier d'aide mériterait d'être un peu étoffé par contre...
le caractère de concaténation (#), il marche que pour les macros ou on peut l'utiliser ailleurs?
(concernant le runtime... je met ça de coté pour plus tard... )
En regardant comment fonctionne ta macro, je me suis rendu compte que ça fonctionne aussi tout simplement comme ça:
Code : Tout sélectionner
For i = 0 To 10
variable_i.s = "test " + i
;Debug variable_i.s
Next
le caractère de concaténation (#), il marche que pour les macros ou on peut l'utiliser ailleurs?
(concernant le runtime... je met ça de coté pour plus tard... )
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: [Résolu] Pas de closeGadget() ??
Tu penses que variable_i.s dans une boucle de 0 à 10 deviendra variable_0.s, variable_1.s, variable_2.s, etc ..... ?
Essayes ce codePossible aussi que j'ai mal compris ce que tu souhaites
Essayes ce code
Code : Tout sélectionner
For i = 0 To 10
variable_i.s = "test " + i
Debug variable_i.s
Next
Debug "Valeur de " + variable_10.s
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: [Résolu] Pas de closeGadget() ??
Code : Tout sélectionner
Macro Pif()
myVar#MacroExpandedCount
EndMacro
Macro Paf()
myVar#MacroExpandedCount
EndMacro
Pif() = 3
Pif() = 12
Pif() = 13
debug Paf()
debug Paf()
debug Paf()
Code : Tout sélectionner
Dim myVar(5)
For i = 0 to 5
myVar(i) = 10 * i
Next
Debug myVar(3)
Re: [Résolu] Pas de closeGadget() ??
@Falsam: C'est tout à fait ça, tu as bien compris, et effectivement ça marche pas...
Et la macro non plus, du coup!
@Ollivier: Avec un tableau, oui, ça devrait aller.
Je vous fait un petit topo: c'est pour afficher un nombre variable de lignes d'une base de donnée dans des textGadget, avec des buttonGadget à chaque ligne pour pouvoir la modifier/supprimer/etc...
Le tout dans une Procedure dans un fichier inclu.
Si je déclare pas les gadgets, ça marche pas, et je peux pas les déclarer parce que je connais pas leur nombre à l'avance...
Ça fonctionne avec var = buttonGadget(#PB_Any, ...) mais il faudrait que je puisse ajouter le N° de ligne à la fin de la variable pour le bindGadgetEvent...
Je test les tableaux ce soir...
Et la macro non plus, du coup!
@Ollivier: Avec un tableau, oui, ça devrait aller.
Je vous fait un petit topo: c'est pour afficher un nombre variable de lignes d'une base de donnée dans des textGadget, avec des buttonGadget à chaque ligne pour pouvoir la modifier/supprimer/etc...
Le tout dans une Procedure dans un fichier inclu.
Si je déclare pas les gadgets, ça marche pas, et je peux pas les déclarer parce que je connais pas leur nombre à l'avance...
Ça fonctionne avec var = buttonGadget(#PB_Any, ...) mais il faudrait que je puisse ajouter le N° de ligne à la fin de la variable pour le bindGadgetEvent...
Je test les tableaux ce soir...
Re: [Résolu] Pas de closeGadget() ??
cowpowah a écrit :....et effectivement ça marche pas...
Et la macro non plus, du coup! ...
G-Rom a écrit :mais comme tu le vois, ca ne marche pas
G-Rom a écrit :reste les tableaux...
Ollivier a écrit :Un tableau fait mieux l'affaire pour ça
Re: [Résolu] Pas de closeGadget() ??
C'est vrai alors tableau ce sera.
(pour ma défense, c'est ton exemple qui m'a enduit d'erreur!!)
En tous cas merci à tous pour le coup de main
(pour ma défense, c'est ton exemple qui m'a enduit d'erreur!!)
En tous cas merci à tous pour le coup de main
Re: [Résolu] Pas de closeGadget() ??
Les concaténations, ça se limite à ce type de bug :Si on décommente Mn(...), ça n'identifie pas Mn en tant que macro bien que la macro Mn soit créée. Le genre de bug qui n'existe pas en traitant des tableaux.
Code : Tout sélectionner
Macro M0(Alpha)
Alpha
EndMacro
Macro M1(Alpha)
M0(Alpha)
M0(Alpha)
EndMacro
Macro Mn(Alpha, N)
M#N(Alpha)
M#N(Alpha)
EndMacro
M1(Debug "YES")
;Mn(Debug "YES", 1)