Programmation

Résolu
Signaler
Messages postés
159
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
6 février 2007
-
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
-
Bonjour,
j'aimerais passer une propriété d'un controle par une chaine concaténée ex:label.hide deviendrais chaine concaténée.hide, mais ca ne marche pas. voici le code.


Dim i, j
As
Integer



Dim concat



For i = 1
To 40



For j = 1
To 6


concat = "triangle" & i & "_" & j


Label2.Text = concat


concat.hide()



Next j



Next i

pouvez-vous m'aider.

Merci.

Pascal.

12 réponses

Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
alors la !!! Mystère !!
3
Merci

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

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

Messages postés
6
Date d'inscription
samedi 11 janvier 2003
Statut
Membre
Dernière intervention
17 novembre 2005

concat.hide()? tu voulais le faire disparaitre? seul les onjest ayant un évenement hide peuvent l'appeler. Et ton concat ressemble plus à une variable de type string. Tu devrais lui affecter un type : Dim Concact as String

Et les labels n'ont pas de propriété text mais caption.
essaie avec Label2.caption = concact

Dim i, j As Integer

Dim concat as String

For i = 1 To 40

For j = 1 To 6

concat = "triangle" & i & "_" & j

Label2.Caption = concat

concat.hide()

Next j

Next i
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
Il faut passer par la collection Controls ...

Dim Ctrl as Control
Dim i, j As Integer
Dim concat as String

For i = 1 To 40
For j = 1 To 6
concat = "triangle" & i & "_" & j
For each Ctrl in Me.Controls
If Ctrl.Name = concat then
Label2.Caption = concat ' Inutile à mon avis car si plusieurs ctrl, ca ira trop vite on ne verra rien s'affiché dans label2, sauf le nom du dernier controle
Ctrl.hide
end if
Next
Next
Next

CR
Messages postés
159
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
6 février 2007

Merci de votre réponse, mais je met ce code dans un form_load et ne reconnait pas le Ctrl.hide ou Ctrl.visible=true pour chaque picturebox conté dans les boucles. avez-vous la solution, merci.

Pascal
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
Il est impossible de faire ce genre de manip dans un Form_Load effectivement ! Ds le Form_Load les controles sont en cours de chargement et certaines de leurs propriétés sont inaccessibles !
Il suffira de coller cela dans le Form_Activate(), plutot que dans le Form_Load et ce sera OK, car il se produit juste après le Form_Load(). Par contre, si l'utilisateur ouvre un autre programme puis rebascule (par Alt+Tab par exemple) sur ton appli, Form_Activate() est de nouveau appelé. Si cela pose un pb avec ton code, il suffira de gérer une variable public (déclarée public dans un moduel standard) de type Boolean, que tu mets à True dans le Form_Load et à False à la fin du Form_Activate(). Ensuite, tu n'executes le code que je t'ai donné que si cette variable est True.

CR
Messages postés
159
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
6 février 2007

en fait, j'ai plusieurs picturebox appellées triangle1_1 jusqu'a triangle40_6 et veut à la plce d'écrire toute les lignes triangle1_1.hide
compter avec les boucles de 1_1 à 40_6 puis concaténer les chaine en triangle1_1 à triangle40_6.
merci

Pascal
Messages postés
159
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
6 février 2007

ca marche, mais le ctrl ne reconnait pas mes picturebox

For i = 1 To 40
For j = 1 To 6
concat = "triangle" & i & "_" & j
For each Ctrl in Me.Controls
If Ctrl.Name = concat then
Label2.Caption = concat
Ctrl.hide ' j'aimerais que le hide efface les picturebox de triangle1_1 à triangle40_6
end if
Next
Next
Next

merci encore

Pascal.
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
Attention à la casse du nom des controles ? peut-être ca la cause ? Essaye en passant tout en majuscule au moment du test avec cela ...

If UCase$(Ctrl.Name) = UCase$(concat) then

CR
Messages postés
159
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
6 février 2007

non, ca ne marche pas, la condition n'est pas remplie, car le Label n'est pas remplit avec le dernier nom de triangle40_6.
j'ai l'impression que ctrl ne reconnait pas la chaine concatenée?
merci
Messages postés
159
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
6 février 2007

question;
ne pourrais-je pas tout simplement faire ceci

"triangle" & i & "_" & j.hide
Messages postés
4172
Date d'inscription
mercredi 30 juillet 2003
Statut
Membre
Dernière intervention
9 juin 2006
27
Non !! Cela serait vraiment trop simple !!
Mais c'est étrange car le code que je t'ai donné fonctionne chez moi ????

CR
Messages postés
159
Date d'inscription
lundi 5 avril 2004
Statut
Membre
Dernière intervention
6 février 2007

j'utilise un picturebox spécial (ocx), c'est peut-etre ca.
si c'est ca, comment faire la meme chose avec ce control?
merci