Pb sur Unload de controles ajoutés dynamiquement [Résolu]

Signaler
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
6 décembre 2006
-
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
-
Bonjour à tous,

Voilà mon pb :
- Je créé d'abord dynamiquement des Tabstrip.
- Je créé ensuite dynamiquement des CheckBox sur chaque Tabstrip créé.

J'arrive à Unloader les Tabstrip mais je n'arrive pas à Unloader les CheckBox créés sur chaque Tabstrip.
L'index de chacun des CheckBox ne se suivent pas car je les créée suivant une combinaison.

J'ai essayé ça mais ça ne marche pas :

Dim CheckSupp As CheckBox

For Each CheckSupp In MonTabstrip(IndexduTabstrip)
Unload CheckSupp
Next CheckSupp

Si qqun pouvait m'aider parce que là je sèche royal.

Merci d'avance

15 réponses

Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
ah mais si c que tu as réussi

et c'est ce que je te disais tout à l'heure
dès lors que tu supprime un control l'index de tous les controls change
donc à chaque fois que tu supprime un control il te faut refaire une récupération d'index
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 108 internautes nous ont dit merci ce mois-ci

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
salut,
eldim ->l'indice change? bah j'en apprend une bien bonne.
il ne manquerait plus que çà......
l'indice ne change pas, fort heureusement.

yohan -> ton erreur est due au fait que tu n'as pas que des CheckBox dynamiques, et que tu essaies de décharger TOUS les contrôles.
donc avant de décharger, tu vérifies "TypeOf". si c'est bien un checkbox (et je te souhaite qu'il n'y ai pas aussi des checkbox non-dynamiques) alors tu peux décharger.
PCPT
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 108 internautes nous ont dit merci ce mois-ci

Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Bonjour à toi,

(Je suis mort d'avoir été autant de fois plagié....)

pour supprimer un control tu fais un dispose

nb:l'index de chaque control change à chaque fois que tu en supprime 1

A+
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
6 décembre 2006

Qu'est-ce que tu entends par "faire un dispose" ?, j'comprends pas trop.

Merci
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
6 décembre 2006

précision : je suis en VB6 (en non en .net)
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Ah pardon

Désolé je croyais que t'était en VB.NET

Ben essai avec un set NomControl=nothing
(non testé)
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
6 décembre 2006

Tu pouvais pas savoir, j'ai oublié de le préciser.

J'essayer mais ça ne marche toujours pas.
Il me met le msg "Erreur d'exécution 438: l'objet ne gère pas cette propriété ou cette méthode" sur la ligne :

For Each CheckSupp In MonTabstrip(IndexduTabstrip)
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Salut pcpt !

Ben en tout cas .NET l'indice change... j'en ai donc déduit qu'il changeait aussi en VB6.

Et je te garanti qu'en VB.NET il change car ça m'a posé deux jours de réflexion acharné pour ma suppression de combobox
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
eldim -> je ne connais pas .net, et comme le problème est en VB6....
cela dit, en VB6, il m'arrive très fréquemment d'utiliser des contrôles indexés, et de les repérer en sachant que le (2) est utilisé tout à fait différemment du (3).
en VB6, çà ne change pas, mais il me parraît assez inconcevable qu'il faille gérer le code plus ou moins dynamiquement en sachant que le code du (2) peut donc être faux....
(mais je te crois sur parole )
PCPT
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Il n'y a pas de faux ou de vrai je vois pas vraiment le rapport...

M'enfin y a sans doute des choses qui m'échappent vu que je suis un autodidacte
(Si tu te met au .net je te dirai ce que j'ai fait et tu me diras ce que t'en pense..)
Messages postés
37
Date d'inscription
lundi 15 mars 2004
Statut
Membre
Dernière intervention
6 décembre 2006

Merci à tous les 2,

Ne vous fritez pas pour si peu, ça m'embetterai d'être à l'origine d'un conflit :)

PCPT, malheureusement j'ai quand même un CheckBox non dynamique (qui a l'index 0), mais voilà ce que j'ai fait et qui a l'air de fonctionner :

Dim CheckSupp As CheckBox

For Each CheckSupp In Me.Check1
If CheckSupp.Index <> 0 Then
Unload CheckSupp
End If
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
quand je parle de "faux", c'est à dire....
admettons (très bêtement) 3 CommandButton
Cmd(0) Cmd(1) Cmd(2)

0 => msgbox time
1=> grise le 0
2=> unload

je supprime le 1 en cours d'execution, je considère que mon cmd(2) est donc un faux....., puisque de "quitter", c'est finalement lui qui va griser le cmd(0)... (d'après ce que tu dis en .Net) et çà, çà me parraît un peu très merdique....
non?

ce problème ne se présente pas en VB6 en tout cas

(.net ... j'y pense oui, mais pas pour cette année)
PCPT
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
Non en fait non
En .NET la procédure est liée au control par un ajout d'événement sur celui-ci...

tu n'as pas du me comprendre mais c pas grave

je te disais simplement que si tu enlève un control d'un formulaire l'index de chaque control du formulaire change exemple :
with FRM
.control(1).name = "Toto"
.control(2).name = "Bidule"
.control(3).name = "Machin"
.control(1).delete
.control(1).name = "Bidule"
...
end with

et quand y a plus d'une centaine de controls à gérer ça ne se passe pas forcément dans l'ordre que tu le souhaite...

voila le problème que j'avais eu, et ce que je pensais qu'il y avait ici

Et les procédure sont indépendantes de l'indice d'un control puissequ'un control n'est qu'une class... lol
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
35
ok (je sens que je vais rester sous VB6 encore quelques temps ...)
Messages postés
956
Date d'inscription
lundi 30 mai 2005
Statut
Membre
Dernière intervention
21 août 2014
1
C'est comme tu veux m'enfin y a des choses qui se font beaucoup plus facillement et plus rapidement en VB NET plutot qu'en VB 6...

Et... o pi j'suis pas vendeur lol
A+