[Résolu] Pas de closeGadget() ??

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

[Résolu] Pas de closeGadget() ??

Message par cowpowah »

Hello,

Je viens de réaliser qu'il n'y a pas de fonction pour fermer un gadget?!? 8O 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.
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Pas de closeGadget() ??

Message par Marc56 »

cowpowah a écrit : Je viens de réaliser qu'il n'y a pas de fonction pour fermer un gadget?!? 8O On peut en créer dans le code mais pas les supprimer?
FreeGadget()
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

Re: Pas de closeGadget() ??

Message par cowpowah »

Pff... J'ai plus les yeux en face des trous... Le pire c'est que j'ai cherché pendant une bonne 1/2 heure! :roll:

Merci Marc! :wink:

Ça fonctionne comme ça?

Code : Tout sélectionner

nomGadget = TextGadget(#PB_any, X, Y, Largeur, Hauteur, Texte$)

FreeGadget(nomGadget)
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: Pas de closeGadget() ??

Message par Marc56 »

Oui,
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
:wink:
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

Re: [Résolu] Pas de closeGadget() ??

Message par cowpowah »

Ok, bon à savoir, merci du tuyau ;)

Au passage, peut-être que tu sais comment faire un nom de variable itératif? :mrgreen:

Code : Tout sélectionner

for i=0 to 3
  (variable+i).s = blahblah
next
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: [Résolu] Pas de closeGadget() ??

Message par G-Rom »

cowpowah a écrit :Ok, bon à savoir, merci du tuyau ;)

Au passage, peut-être que tu sais comment faire un nom de variable itératif? :mrgreen:

Code : Tout sélectionner

for i=0 to 3
  (variable+i).s = blahblah
next
avec des macro

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
mais comme tu le vois, ca ne marche pas en runtime, reste les tableaux...
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

Re: [Résolu] Pas de closeGadget() ??

Message par cowpowah »

Merci G-Rom!

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
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... :mrgreen:

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... :mrgreen: )
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: [Résolu] Pas de closeGadget() ??

Message par falsam »

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 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
Possible aussi que j'ai mal compris ce que tu souhaites :wink:
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%
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: [Résolu] Pas de closeGadget() ??

Message par Ollivier »

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()
Ce n'est pas utile car difficilement maîtrisable. Un tableau fait mieux l'affaire pour ça (le i au lieu de le mettre derrière le tiret du 8, tu le mets entre parenthèses.

Code : Tout sélectionner

Dim myVar(5)
For i = 0 to 5
 myVar(i) = 10 * i
Next
Debug myVar(3)
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

Re: [Résolu] Pas de closeGadget() ??

Message par cowpowah »

@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...
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: [Résolu] Pas de closeGadget() ??

Message par G-Rom »

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
cowpowah
Messages : 41
Inscription : mer. 02/juin/2010 12:41

Re: [Résolu] Pas de closeGadget() ??

Message par cowpowah »

C'est vrai ;) alors tableau ce sera.

(pour ma défense, c'est ton exemple qui m'a enduit d'erreur!!) :twisted:

En tous cas merci à tous pour le coup de main :D
Ollivier
Messages : 4190
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: [Résolu] Pas de closeGadget() ??

Message par Ollivier »

Les concaténations, ça se limite à ce type de bug :

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)
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.
Répondre