OVH Cloud OVH Cloud

Ajouter des contôles dynamiquement

2 réponses
Avatar
Raymond Fournier
Bonjour a tous
J'ai déjà poser une cette question la semaine dernière et on ma
répondu. La question etait:

J'ai des contrôles picture que je rajoute dynamiquement. Il y en a
sept qui son indexer. J'ai créé une procédure qui serai commune au sept,
seul le nom du contrôle change. Alors:

AjoutLigneImage picEpicerie1(NbrLigneTabItem), ActionAjoutLigne
AjoutLigneImage picEpicerie2(NbrLigneTabItem), ActionAjoutLigne

Private Sub AjoutLigneImage(MonControleImage As PictureBox,
ActionAjoutLigne As Byte)

Load MonControleImage
MonControleImage.Top = MonControleImage(NbrLigneTabItem -1).Top +
picEpicerie1(0).Height

If ActionAjoutLigne = lcLigneFichierItems Then
FondCrochet (tabItems(1, NbrLigneTabItem))
MonControleImage.Picture = LoadPicture(CheminTypeFond)
MonControleImage.Tag = EpicerieTag
MonControleImage.Visible = True
Else
FondCrochet 0
MonControleImage.Picture = LoadPicture(CheminTypeFond)
MonControleImage.Tag = "OFF"
MonControleImage.Visible = True
End If

End Sub

Comme la variable MonControleImage contient le nom du contrôle et son
index, comment écrire MonControleImage(NbrLigneTabItem -1).Top pour que
sa fonctionne.

On ma proposer d'écrire:

Private Sub AjoutLigneImage(MonControleImage As PictureBox)
dim Num as integer
num = MonControleImage.ubound +1
load MonControleImage(num)
MonControleImage(num).top = MonControleImage(num-1).height
MonControleImage(num).visible = true
end sub

Sa ne fonctionne toujours pas car MonControleImage contient l'index du
picturBox, donc num = MonControleImage.ubound +1 est une propriétée qui
n'existe pas.

Quelqu'un peux-il s.v.p. m'expliquer se que je ne comprent pas.

Merci. Raymond Fournier

2 réponses

Avatar
Ledev
"Raymond Fournier" a écrit dans le message de
news:
Bonjour a tous
J'ai déjà poser une cette question la semaine dernière et on ma
répondu. La question etait:

J'ai des contrôles picture que je rajoute dynamiquement. Il y en a
sept qui son indexer. J'ai créé une procédure qui serai commune au sept,
seul le nom du contrôle change. Alors:

AjoutLigneImage picEpicerie1(NbrLigneTabItem), ActionAjoutLigne
AjoutLigneImage picEpicerie2(NbrLigneTabItem), ActionAjoutLigne

Private Sub AjoutLigneImage(MonControleImage As PictureBox,
ActionAjoutLigne As Byte)

Load MonControleImage
MonControleImage.Top = MonControleImage(NbrLigneTabItem -1).Top +
picEpicerie1(0).Height

If ActionAjoutLigne = lcLigneFichierItems Then
FondCrochet (tabItems(1, NbrLigneTabItem))
MonControleImage.Picture = LoadPicture(CheminTypeFond)
MonControleImage.Tag = EpicerieTag
MonControleImage.Visible = True
Else
FondCrochet 0
MonControleImage.Picture = LoadPicture(CheminTypeFond)
MonControleImage.Tag = "OFF"
MonControleImage.Visible = True
End If

End Sub

Comme la variable MonControleImage contient le nom du contrôle et son
index, comment écrire MonControleImage(NbrLigneTabItem -1).Top pour que
sa fonctionne.

On ma proposer d'écrire:

Private Sub AjoutLigneImage(MonControleImage As PictureBox)



Là une petite réctification, ce n'est pas MonControleImage as PictureBox
mais as Object, car se n'est pas un PictureBox qu'il faut lui transmettres
mais bien la collection:

Quand vous l'appellez, ne mettez pas:
AjoutLigneImage picturebox(xx)
mais:
AjoutLigneImage PictureBox


dim Num as integer
num = MonControleImage.ubound +1



Num prend la propriété ubound+1, comme vous dites(qui n'éxiste alors pas)

load MonControleImage(num)



La il charge ce controle qui n'éxistait pas, donc a partir de là il existe

MonControleImage(num).top = MonControleImage(num-1).height



Et la, il donne a la propriété top, la valeur du contrôle crée par l'appel
précédent(voir par le contrôle initiale si c'est le 1er appelle) sa
propriété Height. Par contre vous avez oublier le
+MonControleImage(num-1).top:
MonControleImage(num).top MonControleImage(num-1).height+MonControleImage(num-1).top

Ainsi, le nouveau contrôle ira se placer en dessous l'ancien.

MonControleImage(num).visible = true



Et le rend visible

end sub

Sa ne fonctionne toujours pas car MonControleImage contient l'index du
picturBox, donc num = MonControleImage.ubound +1 est une propriétée qui
n'existe pas.



Je pense vous avoir dit tous se que vous deviez corriger, si sa ne marche
toujours pas, n'hésiter pas
a+


Quelqu'un peux-il s.v.p. m'expliquer se que je ne comprent pas.

Merci. Raymond Fournier





Avatar
Raymond Fournier
Merci Beaucoup Ledev, sa fonctionne parfaitement.

Raymond Fournier