Glisser/deposer avec simulation du déplacement du texte d' item, d' une listbox vers une autre listbox ou vers un msflexgri

Soyez le premier à donner votre avis sur cette source.

Vue 5 521 fois - Téléchargée 983 fois

Description

Inspirée de la source de PCPT :
("Les vacances de Mr Mulot",du 22/02/2006 16:30:02)
Cette source combine le DragDrop et le deplacement d' une PictureBox.
Mise à jour prévue : utilisation d' un user control pour la transparence.
...

Conclusion :


@PCPT / Pour l' ico , aucune nouvelle mise à jour n' est prévu pour le moment
peut être plus tard.J' ai eu ma dose avec cette source !

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_andrebernard
Messages postés
406
Date d'inscription
lundi 9 juin 2003
Statut
Membre
Dernière intervention
4 septembre 2013
1
Bonjour RENFIELD

Alors, j'ai fait tout comme "c'est qu't'a dit",

1/ j'ai rien compris a l'histoire de l'icone a la volée, aurais tu un exemple s'il te plait ?

2/ Pourquoi quand on selectionne une ligne dans le listview on voit tout le listview qui se deplace ?

Merci de ton aide

Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Const LB_ITEMFROMPOINT As Long = &H1A9

Private Sub Form_Load()
Dim i As Integer
' initialisation des controls
With lstSource
.AddItem "lstSource 1"
.AddItem "lstSource 2"
.AddItem "lstSource 3"
.AddItem "lstSource 4"
.AddItem "lstSource 5"
.AddItem "lstSource 6"
.AddItem "lstSource 7"
End With

With lstCible
.AddItem "lstCible 8"
.AddItem "lstCible 9"
.AddItem "lstCible 10"
End With
With grdCible
.TextMatrix(0, 0) = "grdCible"


For i = 1 To .Cols - 1
.ColWidth(i) = 1200
Next
End With
End Sub

Private Sub lstSource_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
lstSource.Drag vbBeginDrag
End Sub

Private Sub lstCible_DragDrop(Source As Control, X As Single, Y As Single)
lstCible.AddItem Source.Text
Source.RemoveItem Source.ListIndex
End Sub

Private Sub grdCible_DragDrop(Source As Control, X As Single, Y As Single)
With grdCible
.Row = .MouseRow
.Col = .MouseCol

If .Row >= .FixedRows And .Col >= .FixedCols Then
.Text = Source.Text
.CellBackColor = vbGreen

Source.RemoveItem Source.ListIndex
End If
End With
End Sub

Private Sub cmdTerminer_Click()
Unload Me
End Sub

Public Function GetListItemIndexFromPoint(ByRef Obj As ListBox, ByVal X As Single, ByVal Y As Single) As Integer
Dim Coords As Long
Dim OverIndex As Long

Coords = Obj.Parent.ScaleY(Y, Obj.Parent.ScaleMode, vbPixels) * &H10000 + Obj.Parent.ScaleX(X, Obj.Parent.ScaleMode, vbPixels)
OverIndex = SendMessage(Obj.hwnd, LB_ITEMFROMPOINT, 0&, ByVal Coords)

'# Si le HighWord = 0, un élément a été trouvé
If (OverIndex \ &H10000) = 0 Then
GetListItemIndexFromPoint = OverIndex Mod &H10000
Else
'# Aucun élément n'est survollé...
GetListItemIndexFromPoint = -1
End If
End Function

Dim nIndex As Long
nIndex = GetListItemIndexFromPoint(lstCible, X, Y)
If nIndex > -1 Then
lstCible.AddItem Source.Text, nIndex
Else
lstCible.AddItem Source.Text
End If
Source.RemoveItem Source.ListIndex
End Sub
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
jamais vu... ne signifie pas que c'est impossible ^^
chaibat05
Messages postés
1883
Date d'inscription
samedi 1 avril 2006
Statut
Membre
Dernière intervention
20 novembre 2007
2
Bonsoir Renfield
Si je devais ajouter une icone je le ferais surle UC et pas
avec Drag Drop Standard.Avec ce dernier je n' aurais que
l' icone ou le contour et pas de texte.
Je n' ai jamais vu de texte se déplacer avec un Drag standard.
C' est justement pour ça que j' ai choisi de le personnaliser .


chaibat
Renfield
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
60
GetListItemIndexFromPoint ne sert que pour les ListBoxes....
si tu veux dans un UserControl, ajoutes dans celui-ci une fonction HitTest
(comme on en trouve dans un Treeview ou listView)

Pour l'icone, comme te le suggère PCPT, il suffirait de créer une icone dynamiquement, avec le texte de l'element selectionné (ou d'utiliser une icone drag & drop standard, commune a tous les elements)
et de la placer dans la propriété DragIcon de ton controle source
PCPT
Messages postés
13298
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
30
salut,
tu me demandes un commentaire, alors le voici ;)
intéressant, code lisible, çà peut donc servir.
par contre un ico lors du déplacement, le manque se fait ressentir.
problème : lors du simple click sur lstSource (donc début de déplacement sans déposer), le déplacement a tout de même lieu. en fait tu ne vérifies pas la réception du usercontrol.

et pour pouvoir réutiliser le tout, tout çà sous forme de classe withevents çà serait bien pratique.
bon courage ++

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.