Bonjour,
C'est encore moi avec mes images !
Bon... J'ai un UserForm dans lequel je charge 32 images.
Par la suite, je souhaite pouvoir les "retirer" quand je clique dessus.
Ainsi, grâce à l'aide de Robert et Patrick, j'initialise mon UserForm de la sorte :
Je charge mes images (dans un module) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 Option Explicit Dim MesImages(1 To 32) As New Classe1 Private Sub UserForm_Initialize() Dim i As Byte For i = 1 To 32 Set MesImages(i).Bt = Me.Controls("Image" & i) MesImages(i).Id_Joueur = Int((i - 1) / 8 + 1) Next i Call Load_image End Sub
Et quand je clique dessus (dans un module de classe) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Sub Load_image() Dim i As Byte, j As Byte For j = LBound(oJoueur, 1) To UBound(oJoueur, 1) For i = LBound(oJoueur, 2) To UBound(oJoueur, 2) UserForm1.Controls("Image" & (j - 1) * 8 + i).Picture = LoadPicture("mon_chemin" & oJoueur(j, i).Nombre & "_" & oJoueur(j, i).Couleur & ".jpg") UserForm1.Controls("Image" & (j - 1) * 8 + i).Tag = oJoueur(j, i).Nombre & "_" & oJoueur(j, i).Couleur UserForm1.Controls("Image" & (j - 1) * 8 + i).PictureSizeMode = 1 Next i Next j End Sub
Or, quand j'applique la méthode Bt.Picture = LoadPicture("") ou Bt.Picture = LoadPicture() ou Bt.Picture = Nothing l'image ne disparaît pas "physiquement"... J'entend par là que je peux toujours la voir... Cependant, il semble que le lien entre mon image et le UserForm soit bien supprimé...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Public WithEvents Bt As MSForms.Image Public Id_Joueur As Byte Private Sub Bt_Click() Dim oStr() As String 'Bt.Picture = LoadPicture() MsgBox Bt.Picture 'Premier point Bt.Picture = Nothing MsgBox Bt.Picture 'Second point Bt.PictureSizeMode = 0 oStr = Split(Bt.Tag, "_") UserForm1.Controls("Carte_J" & Id_Joueur).Picture = LoadPicture("mon_chemin" & oStr(LBound(oStr)) & "_" & oStr(UBound(oStr)) & ".jpg") UserForm1.Controls("Carte_J" & Id_Joueur).PictureSizeMode = 1 Call Poser_carte(oStr(LBound(oStr)), oStr(UBound(oStr)), Id_Joueur) 'MsgBox Id_Joueur End Sub
Dans le code précédent, j'ai précisé deux commentaires.
Le 'Premier point me permet de récupérer une valeur pour m'assurer que l'image est bien sétée :
Ensuite, je tente de supprimer l'image et là, erreur :
... sur la ligne :
Donc je pense bien que l'image n'est plus liée mais... elle est toujours visible...
Qu'est-ce que je fais de mal ?
Par avance, je vous remercie et reste disponible pour tout complément !
Cordialement,
Kimy
Partager