Créer un contrôle image dynamiquement

Fred - 14 mai 2000 à 13:47
 GMI - 9 juil. 2000 à 16:54
Salut,

je voudrais faire un gestionnaire d'albums photos. Sachant qu'un album peut contenir un nombre d'images indéfini, il me faut créer (et afficher) des controles picturebox à partir du code (après exécution).

Et, je ne sais pas comment faire.

Merci pour votre aide.

4 réponses

tu peux procéder comme suit:

* place sur ta feuille un premier controle picturebox pic en lui donnant l'index 0. ce premier controle sera invisible et n'affichera aucune image

* tu charges dynamiquement d'autres controles picturebox autant qu'il y a de photos et tu affiches dedans une photo en précisant son chemein d'acces et en le rendant visible : voir exemple

'parcours le nombre de photos
for i=1 to nbrephoto
'charge dynamiquement un controle
load pic(i)
'charge une image dans ce controle
pic(i).Picture = LoadPicture("C:\Mes Documents\graphics.ICO")
'le rend visible
pic(i).visible=true
' le redimensionne pour afficher toute l'image
pic(i).AutoSize = True
next i

##############################
Si cela ne te suffit pas ecris moi et je t'aiderai. Je sais que c'est incomplet mais si tu arrives a te debrouiller avec ça c'est bon sinon je peux te donner un autre coup de pouce

bonne chance!!!
#############################
0
Pour mon exemple, j'ai ajouté un Label sous l'image pour mettre une description :)

Modifie les propriétés Index et Visible de tes contrôles pour 0 et False.

Ajoute un bouton à 0,0 et appelle-le Btn_Ajouter:

Private Sub Btn_Ajouter_Click()
Dim Compte As Integer
Dim Calculs As Integer

Compte = Picture1.UBound

'If (Compte > 0) Then
If (Picture1(0).Visible) Then
Compte = Compte + 1
Load Picture1(Compte)
Load Label1(Compte)
Calculs = Picture1(Compte - 1).Left + Picture1(Compte).Width + 60
If ((Calculs + Picture1(Compte).Width) > (Me.Width - Picture1(0).Left)) Then
Calculs = Picture1(Compte).Height
Picture1(Compte).Top = Calculs + Picture1(Compte - 1).Top + Label1(Compte).Height + 180
Label1(Compte).Top = Calculs + Picture1(Compte).Top + 60
Calculs = Picture1(0).Left
Else
Picture1(Compte).Top = Picture1(Compte - 1).Top
Label1(Compte).Top = Label1(Compte - 1).Top
End If

Picture1(Compte).Left = Calculs
Label1(Compte).Left = Calculs

'Else
End If

Picture1(Compte).Visible = True
Label1(Compte).Visible = True



'
'Autre code de mise en forme tel:
'
'Picture1(Compte).Picture = IMAGE
'Label1(Compte).Caption = "DESCRIPTION"

End Sub

Le code prend en considération la largeur mais non la hauteur de ta feuille.

Il ne te reste qu'à trouver une solu à savoir: limiter verticalement (comme la limite horizontale); limiter le nombre total; ou encore mettre des barres de défilement dans un ou les deux sens.

Je vais ajouter mon projet source sur le site.
0
-------------------------------
Réponse au message :
-------------------------------

Pour mon exemple, j'ai ajouté un Label sous l'image pour mettre une description :)

Modifie les propriétés Index et Visible de tes contrôles pour 0 et False.

Ajoute un bouton à 0,0 et appelle-le Btn_Ajouter:

Private Sub Btn_Ajouter_Click()
Dim Compte As Integer
Dim Calculs As Integer

Compte = Picture1.UBound

'If (Compte > 0) Then
If (Picture1(0).Visible) Then
Compte = Compte + 1
Load Picture1(Compte)
Load Label1(Compte)
Calculs = Picture1(Compte - 1).Left + Picture1(Compte).Width + 60
If ((Calculs + Picture1(Compte).Width) > (Me.Width - Picture1(0).Left)) Then
Calculs = Picture1(Compte).Height
Picture1(Compte).Top = Calculs + Picture1(Compte - 1).Top + Label1(Compte).Height + 180
Label1(Compte).Top = Calculs + Picture1(Compte).Top + 60
Calculs = Picture1(0).Left
Else
Picture1(Compte).Top = Picture1(Compte - 1).Top
Label1(Compte).Top = Label1(Compte - 1).Top
End If

Picture1(Compte).Left = Calculs
Label1(Compte).Left = Calculs

'Else
End If

Picture1(Compte).Visible = True
Label1(Compte).Visible = True



'
'Autre code de mise en forme tel:
'
'Picture1(Compte).Picture = IMAGE
'Label1(Compte).Caption = "DESCRIPTION"

End Sub

Le code prend en considération la largeur mais non la hauteur de ta feuille.

Il ne te reste qu'à trouver une solu à savoir: limiter verticalement (comme la limite horizontale); limiter le nombre total; ou encore mettre des barres de défilement dans un ou les deux sens.

Je vais ajouter mon projet source sur le site.

-------------------------------
Réponse au message :
-------------------------------

Salut,

je voudrais faire un gestionnaire d'albums photos. Sachant qu'un album peut contenir un nombre d'images indéfini, il me faut créer (et afficher) des controles picturebox à partir du code (après exécution).

Et, je ne sais pas comment faire.

Merci pour votre aide.

-------------------------------
-------------------------------
0
Avez vous essayé le contrôle "ImageList" en procédant comme suit :

- Menu Projet,
- Composants,
- Cocher "Microsoft Windows Common Controls "
- Appliquer.

Vous trouverez alors le contrôle "ImageList" dans la barre d'outils VB.

- Consulter l'aide pour plus de précisions sur l'utilisation de ce contrôle.
0
Rejoignez-nous