Drag and Drop, glissement et échange simultané entre 2 picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça glisse,
mais ça ne marche pas complètement, je n'ai pas d'échange d'image, je
m'explique d'abord, et ensuite voici mon code (doit y avoir un erreur de code
ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les propriétés
(répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs, dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est là où ça
ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As Single, Y As
Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As Single, Y As
Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
Drag and Drop, glissement et échange simultané entre 2 picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça glisse,
mais ça ne marche pas complètement, je n'ai pas d'échange d'image, je
m'explique d'abord, et ensuite voici mon code (doit y avoir un erreur de code
ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les propriétés
(répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs, dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est là où ça
ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As Single, Y As
Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As Single, Y As
Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
Drag and Drop, glissement et échange simultané entre 2 picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça glisse,
mais ça ne marche pas complètement, je n'ai pas d'échange d'image, je
m'explique d'abord, et ensuite voici mon code (doit y avoir un erreur de code
ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les propriétés
(répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs, dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est là où ça
ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As Single, Y As
Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As Single, Y As
Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
LE TROLL has brought this to us :Drag and Drop, glissement et échange simultané entre 2 picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y avoir
un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs, dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est là où
ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As Single, Y
As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As Single, Y
As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
LE TROLL has brought this to us :
Drag and Drop, glissement et échange simultané entre 2 picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y avoir
un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs, dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est là où
ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As Single, Y
As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As Single, Y
As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
LE TROLL has brought this to us :Drag and Drop, glissement et échange simultané entre 2 picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y avoir
un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs, dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est là où
ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As Single, Y
As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As Single, Y
As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Ah, j'ai essayé le LoadPicture (Load), dans le style (app.path &
"" &
pictureX(OldIndex)), mais ça renvoie le numéro du nouvel index de
l'évènement DragDrop, un truc infernal du genre - 1325467...
En fait, Over donne bien l'I de la source (que je stoque dans
"i"), et
Drag donne bien l'index de la cible (Index), quant au nom de la
"Source", ben c'est un truc du genre "-132546"...
Mais ça ne marche pas, car (il me semble), au moment du Drop sur la
cible, l'Over redonne le nouveau n° (i) à l'ancienne valeur (contenue
dans i), et donc ça coince, je me demande si j'ai pris le bon
évènement, je n'ai jamais touché à ça moi, lol ???
-----------
"Quasimodo" a écrit dans le message de news:LE TROLL has brought this to us :Drag and Drop, glissement et échange simultané entre 2
picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une
réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y
avoir un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs,
dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est
là où ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Ah, j'ai essayé le LoadPicture (Load), dans le style (app.path &
"" &
pictureX(OldIndex)), mais ça renvoie le numéro du nouvel index de
l'évènement DragDrop, un truc infernal du genre - 1325467...
En fait, Over donne bien l'I de la source (que je stoque dans
"i"), et
Drag donne bien l'index de la cible (Index), quant au nom de la
"Source", ben c'est un truc du genre "-132546"...
Mais ça ne marche pas, car (il me semble), au moment du Drop sur la
cible, l'Over redonne le nouveau n° (i) à l'ancienne valeur (contenue
dans i), et donc ça coince, je me demande si j'ai pris le bon
évènement, je n'ai jamais touché à ça moi, lol ???
-----------
"Quasimodo" <wild_riki.@yahoo.fr> a écrit dans le message de news:
mn.c4937d4b89fe810f.18602@yahoo.fr...
LE TROLL has brought this to us :
Drag and Drop, glissement et échange simultané entre 2
picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une
réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y
avoir un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs,
dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est
là où ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Ah, j'ai essayé le LoadPicture (Load), dans le style (app.path &
"" &
pictureX(OldIndex)), mais ça renvoie le numéro du nouvel index de
l'évènement DragDrop, un truc infernal du genre - 1325467...
En fait, Over donne bien l'I de la source (que je stoque dans
"i"), et
Drag donne bien l'index de la cible (Index), quant au nom de la
"Source", ben c'est un truc du genre "-132546"...
Mais ça ne marche pas, car (il me semble), au moment du Drop sur la
cible, l'Over redonne le nouveau n° (i) à l'ancienne valeur (contenue
dans i), et donc ça coince, je me demande si j'ai pris le bon
évènement, je n'ai jamais touché à ça moi, lol ???
-----------
"Quasimodo" a écrit dans le message de news:LE TROLL has brought this to us :Drag and Drop, glissement et échange simultané entre 2
picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une
réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y
avoir un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs,
dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est
là où ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Bonjour LE TROLL,
Suis pas un grand spécialiste du Drag&Drop, mais une idée ...
Soit une form avec 6 (oui tu lis bien six) PictureBoxes
Les 5 premieres affichent les icones des P, K, T, C et Atout
La 6ème est masquée pour stocker l'image de la picturebox qui va recevoir
celle déplacée.
Une variable iDepart définie à -1 dans la sub Form_Load()
Cette variable permet d'éviter que le déplacement de la 3, 4 ou 5eme image
vers la 1ere en passant sur les intermédiaires ne te réinitialise la
valeur
de l'index, idem si le déplacement se fait vers la droite.(Ce qui était
ton
prob)
Ci-dessous, les PictureBoxes sont nommées : Depart
Les images sont définies en dur dans les PictureBoxes(Fenêtre des
propriétés), DragMode et AutoSize aussi.
Partie Général - Déclarations:
Dim iDepart As Integer
et le code dans les procédures suivantes:
Private Sub Form_Load()
iDepart = -1 ' initialisation
End Sub
Private Sub Depart_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
If State = vbLeave And iDepart = -1 Then
iDepart = Index
End If
End Sub
Private Sub Depart_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' on stocke l'image qui va être écrasée
Depart(5).Picture = Depart(Index).Picture
' on affecte l'image déplacée
Depart(Index).Picture = Source.Picture
' on met l'image stockée dans la picturebox initiale(de départ)
Depart(iDepart).Picture = Depart(5).Picture
' réinitialisation
iDepart = -1
End Sub
Suis pas sur d'avoir été très clair ..., mais ca devrait te mettre sur la
voie
A+
Eric
"LE TROLL" <le écrivait
news::Ah, j'ai essayé le LoadPicture (Load), dans le style (app.path &
"" &
pictureX(OldIndex)), mais ça renvoie le numéro du nouvel index de
l'évènement DragDrop, un truc infernal du genre - 1325467...
En fait, Over donne bien l'I de la source (que je stoque dans
"i"), et
Drag donne bien l'index de la cible (Index), quant au nom de la
"Source", ben c'est un truc du genre "-132546"...
Mais ça ne marche pas, car (il me semble), au moment du Drop sur la
cible, l'Over redonne le nouveau n° (i) à l'ancienne valeur (contenue
dans i), et donc ça coince, je me demande si j'ai pris le bon
évènement, je n'ai jamais touché à ça moi, lol ???
-----------
"Quasimodo" a écrit dans le message de news:LE TROLL has brought this to us :Drag and Drop, glissement et échange simultané entre 2
picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une
réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y
avoir un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs,
dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est
là où ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Bonjour LE TROLL,
Suis pas un grand spécialiste du Drag&Drop, mais une idée ...
Soit une form avec 6 (oui tu lis bien six) PictureBoxes
Les 5 premieres affichent les icones des P, K, T, C et Atout
La 6ème est masquée pour stocker l'image de la picturebox qui va recevoir
celle déplacée.
Une variable iDepart définie à -1 dans la sub Form_Load()
Cette variable permet d'éviter que le déplacement de la 3, 4 ou 5eme image
vers la 1ere en passant sur les intermédiaires ne te réinitialise la
valeur
de l'index, idem si le déplacement se fait vers la droite.(Ce qui était
ton
prob)
Ci-dessous, les PictureBoxes sont nommées : Depart
Les images sont définies en dur dans les PictureBoxes(Fenêtre des
propriétés), DragMode et AutoSize aussi.
Partie Général - Déclarations:
Dim iDepart As Integer
et le code dans les procédures suivantes:
Private Sub Form_Load()
iDepart = -1 ' initialisation
End Sub
Private Sub Depart_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
If State = vbLeave And iDepart = -1 Then
iDepart = Index
End If
End Sub
Private Sub Depart_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' on stocke l'image qui va être écrasée
Depart(5).Picture = Depart(Index).Picture
' on affecte l'image déplacée
Depart(Index).Picture = Source.Picture
' on met l'image stockée dans la picturebox initiale(de départ)
Depart(iDepart).Picture = Depart(5).Picture
' réinitialisation
iDepart = -1
End Sub
Suis pas sur d'avoir été très clair ..., mais ca devrait te mettre sur la
voie
A+
Eric
"LE TROLL" <le troll@paris.fr> écrivait
news:eNHvQVl0EHA.3900@TK2MSFTNGP10.phx.gbl:
Ah, j'ai essayé le LoadPicture (Load), dans le style (app.path &
"" &
pictureX(OldIndex)), mais ça renvoie le numéro du nouvel index de
l'évènement DragDrop, un truc infernal du genre - 1325467...
En fait, Over donne bien l'I de la source (que je stoque dans
"i"), et
Drag donne bien l'index de la cible (Index), quant au nom de la
"Source", ben c'est un truc du genre "-132546"...
Mais ça ne marche pas, car (il me semble), au moment du Drop sur la
cible, l'Over redonne le nouveau n° (i) à l'ancienne valeur (contenue
dans i), et donc ça coince, je me demande si j'ai pris le bon
évènement, je n'ai jamais touché à ça moi, lol ???
-----------
"Quasimodo" <wild_riki.@yahoo.fr> a écrit dans le message de news:
mn.c4937d4b89fe810f.18602@yahoo.fr...
LE TROLL has brought this to us :
Drag and Drop, glissement et échange simultané entre 2
picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une
réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y
avoir un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs,
dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est
là où ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
Bonjour LE TROLL,
Suis pas un grand spécialiste du Drag&Drop, mais une idée ...
Soit une form avec 6 (oui tu lis bien six) PictureBoxes
Les 5 premieres affichent les icones des P, K, T, C et Atout
La 6ème est masquée pour stocker l'image de la picturebox qui va recevoir
celle déplacée.
Une variable iDepart définie à -1 dans la sub Form_Load()
Cette variable permet d'éviter que le déplacement de la 3, 4 ou 5eme image
vers la 1ere en passant sur les intermédiaires ne te réinitialise la
valeur
de l'index, idem si le déplacement se fait vers la droite.(Ce qui était
ton
prob)
Ci-dessous, les PictureBoxes sont nommées : Depart
Les images sont définies en dur dans les PictureBoxes(Fenêtre des
propriétés), DragMode et AutoSize aussi.
Partie Général - Déclarations:
Dim iDepart As Integer
et le code dans les procédures suivantes:
Private Sub Form_Load()
iDepart = -1 ' initialisation
End Sub
Private Sub Depart_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
If State = vbLeave And iDepart = -1 Then
iDepart = Index
End If
End Sub
Private Sub Depart_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' on stocke l'image qui va être écrasée
Depart(5).Picture = Depart(Index).Picture
' on affecte l'image déplacée
Depart(Index).Picture = Source.Picture
' on met l'image stockée dans la picturebox initiale(de départ)
Depart(iDepart).Picture = Depart(5).Picture
' réinitialisation
iDepart = -1
End Sub
Suis pas sur d'avoir été très clair ..., mais ca devrait te mettre sur la
voie
A+
Eric
"LE TROLL" <le écrivait
news::Ah, j'ai essayé le LoadPicture (Load), dans le style (app.path &
"" &
pictureX(OldIndex)), mais ça renvoie le numéro du nouvel index de
l'évènement DragDrop, un truc infernal du genre - 1325467...
En fait, Over donne bien l'I de la source (que je stoque dans
"i"), et
Drag donne bien l'index de la cible (Index), quant au nom de la
"Source", ben c'est un truc du genre "-132546"...
Mais ça ne marche pas, car (il me semble), au moment du Drop sur la
cible, l'Over redonne le nouveau n° (i) à l'ancienne valeur (contenue
dans i), et donc ça coince, je me demande si j'ai pris le bon
évènement, je n'ai jamais touché à ça moi, lol ???
-----------
"Quasimodo" a écrit dans le message de news:LE TROLL has brought this to us :Drag and Drop, glissement et échange simultané entre 2
picturesBoxs...
Bonjour,
Grâce à ma question en "majuscules", j'ai quand même eu une
réponse,
merci :o) Un exemple VB que je n'avais pas vu, en fait ça marche, ça
glisse, mais ça ne marche pas complètement, je n'ai pas d'échange
d'image, je m'explique d'abord, et ensuite voici mon code (doit y
avoir un erreur de code ou d'évènement?):
J'ai 5 picturesBoxs(i) (0 à 4) à DragMode = 1 (automatic) +
AutoSize=True...
Dans ces 5 PicturesBoxs, j'ai 5 image chargés en dur dans les
propriétés (répertoire courant de l'exe).
Je voudrais classer ses images contenues dans les picturesBoxs,
dans
l'ordre "que je veux", mais je voudrais un échange simultané (c'est
là où ça ne marche pas), par exemple:
La 0 glisse sur la 3, donc la 3 va à la place de la 0, soit:
0 1 2 3 4
3 1 2 0 4
Voici le code, merci si vous voyez où est l'erreur:
Dim i As Long
'
Sub Form_Load()
For i = 0 To 4
Picture1(i).DragMode = 1 ' automatic
Picture1(i).AutoSize = True
Next i
End Sub
Sub Picture1_DragOver(Index As Integer, Source As Control, X As
Single, Y As Single, State As Integer)
i = Index
End Sub
Sub Picture1_DragDrop(Index As Integer, Source As Control, X As
Single, Y As Single)
' index de dépôt (cible)
If TypeOf Source Is PictureBox Then
Picture1(Index).Picture = Source.Picture
Picture1(i) = Picture1(Index) ' <<<--- PAS D'ECHANGE ???
End If
End Sub
soir,
vous devez peut être faire un loadpicture au lieux d'une simple
affectation ?
@+Quaz
--
This is an automatic signature of MesNews.
Site : http://mesnews.no-ip.com
mais sinon, j'ai donné un exemple vers la
droite, mais en fait, ça marche aussi vers la gauche, je ne voulais
pas faire une exégèse...
mais sinon, j'ai donné un exemple vers la
droite, mais en fait, ça marche aussi vers la gauche, je ne voulais
pas faire une exégèse...
mais sinon, j'ai donné un exemple vers la
droite, mais en fait, ça marche aussi vers la gauche, je ne voulais
pas faire une exégèse...