Accueil > > > FAIRE GLISSER UN ÉLÉMENT DANS UNE LISTBOX FAÇON "WINAMP"
FAIRE GLISSER UN ÉLÉMENT DANS UNE LISTBOX FAÇON "WINAMP"
Information sur la source
Description
Alors plutot que d'utiliser deux boutons "Monter" et "Descendre" pour modifier la position d'un élément sélectionné dans une ListBox, je trouve plus sympa et aussi plus pratique de pouvoir le faire glisser avec la souris jusqu'à la position désirée (comme pour la playlist de Winamp par exemple) Je tiens à remercier "hvb" dont la source ( http://www.vbfrance.com/code.aspx?id=4908 )m'a été bien précieuse, mais qui a malheureusement pour défaut de ne pas modifier la ListBox en "temps réel", mais seulement lorsque l'on relache le bouton de la souris.
Source
- Dim ancien_index As Integer 'index de l'élément de départ
- Dim nouvel_index As Integer 'nouvel index de la souris en "temps réel"
- Dim nom_index As String 'nom de l'élément de l'ancien index
-
-
- 'Action à effectuer lors d'un clic gauche de la souris sur un élément de la liste
- Private Sub Liste1_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
- ancien_index = Liste1.ListIndex
- End Sub
-
-
- 'Action à effectuer lors d'un mouvement de la souris dans la liste
- Private Sub Liste1_MouseMove(button As Integer, shift As Integer, x As Single, y As Single)
- If button = 1 Then 'il faut évidemment que le clic gauche reste enfoncé
- nouvel_index = Liste1.ListIndex
- If nouvel_index <> ancien_index Then 'il faut aussi que la souris ai quitté l'ancien élément
- 'on inverse ensuite les deux éléménts
- nom_index = Liste1.List(ancien_index)
- Liste1.RemoveItem ancien_index
- Liste1.AddItem nom_index, nouvel_index
- 'on modifie enfin l'index de l'élément séléctionné
- Liste1.ListIndex = nouvel_index
- 'on reinitialise l'ancien index a la nouvelle position
- ancien_index = nouvel_index
- End If
- End If
- End Sub
Dim ancien_index As Integer 'index de l'élément de départ
Dim nouvel_index As Integer 'nouvel index de la souris en "temps réel"
Dim nom_index As String 'nom de l'élément de l'ancien index
'Action à effectuer lors d'un clic gauche de la souris sur un élément de la liste
Private Sub Liste1_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
ancien_index = Liste1.ListIndex
End Sub
'Action à effectuer lors d'un mouvement de la souris dans la liste
Private Sub Liste1_MouseMove(button As Integer, shift As Integer, x As Single, y As Single)
If button = 1 Then 'il faut évidemment que le clic gauche reste enfoncé
nouvel_index = Liste1.ListIndex
If nouvel_index <> ancien_index Then 'il faut aussi que la souris ai quitté l'ancien élément
'on inverse ensuite les deux éléménts
nom_index = Liste1.List(ancien_index)
Liste1.RemoveItem ancien_index
Liste1.AddItem nom_index, nouvel_index
'on modifie enfin l'index de l'élément séléctionné
Liste1.ListIndex = nouvel_index
'on reinitialise l'ancien index a la nouvelle position
ancien_index = nouvel_index
End If
End If
End Sub
Conclusion
Je ne crois pas qu'il y est de bugs : la source dont je me suis inspiré n'en avait déja pas j'avais pas envie d'en rajouter ;) merci de m'envoyer vos réactions :)
Historique
- 13 juillet 2007 18:23:28 :
- Je viens tout juste de revoir cette petite source:
- j'y ai incorporé les suggestions apportées par "soldier8514" (il y a exactement 2 ans pile, pure coïncidence!), qui évite de redéclarer quelques variables à chaque mouse_move.
- optimisation de la fin du code (modification de l'élément sélectionné, ainsi que la réinitialisation de l'ancien index, qui sont codés de façon plus direct)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
"Font" différent dans un même listbox [ par Pace ]
Est-ce que quelqu'un c'est si cela est possiblede mettre différents font pour les éléments d'un même listbox? Ou à la limite mettre certains éléments
VB et les LISTBOX [ par zorglup ]
est il possible de changer la couleur des éléments d'une ListBox... sinon, est il possible d'empêcher la sélection d'1 des éléments d'une ListBox ?!
VB et XML [ par pierreII ]
Bonjour,J'ai réalisé un petit programme qui affiche du texte dans une ListBox, j'aimerais récupérer les éléments de cette ListBox, et les mettre dans
Sauvegarder les éléments d'une ListBox dans un fichier texte [ par vortexx ]
Salut tt le monde, j'ai un petit problème, j'aimerais savoir commen ton fait pour sauvegarder les éléments d'une ListBox dans un fichier texte ou rtf.
Boucle avec une listbox [ par FloFlo78 ]
bonjour, je suis novice en VB et j'aurais besoin d'un coup de pouce: je voudrais faire une boucle pr enregistrer des éléments d'une liste ds une table
glisser listbox->treeview [ par bingo974 ]
Bonjour,Je n'arrive pas à trouver un code sur vbfrance me permettant de réaliser un dragdrop entre une listbox et un treeview en utilisant OLEDRAG OLE
ListBox et Roulette de souris [ par Algade ]
AlgadeMa roulette fonctionne parfaitement dans les listbox sous windows ou avec Word et aussi en développement sous VB lorsque je fait défiler le code
deux éléments dans une listbox [ par vbKiller187 ]
VBKiller187Bonjour tous le monde,j'ai une question urgente !!je voudrais afficher deux champs d'une table dans
Glisser déposer dans une liste [ par cheche ]
Bonjour,je voudrais coder une liste dont les éléments pourraient être interverti par simple glisser déposer.Apparemment le drag & drop déplace la list
Supprimer des éléments sélectionnés dans une ListBox [ par MaitreNicodeme ]
Bonjour à tous :) !J'utilise 2 ListBox. La première, que l'on nommera List1, contient des paramètres sélectionnables par l'utilisateur.La deuxième, qu
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|