begin process at 2012 02 16 11:32:17
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > 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

Note :
8,5 / 10 - par 2 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Classé sous :listbox, winamp, glisser, éléments, souris Niveau :Débutant Date de création :31/12/2004 Date de mise à jour :13/07/2007 18:23:27 Vu :3 508

Auteur : cresus18

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 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

Source avec Zip TEXTBOX EN NUMÉRIQUE par 320C
Source avec Zip DÉCIMAL TO HEXDECIMAL par loulou27200
SOUS-TITRES : INCRÉMENTATION DE TOUTES LES CHAÎNES DE CARACT... par ALMIRA
Source avec Zip Source avec une capture EVALUER UN NOMBRE D'OBJETS AVEC UNE BALANCE ET DEUX ÉCHANTIL... par lexsty
Source avec Zip Source avec une capture PETIT LOGICIEL DE DEVIS SANS BD par lololilizozo

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PLANCHE CONTACT SOUS WORD par Le Pivert
Source avec Zip Source avec une capture DÉMON D'ÉCOUTE par 8Tnerolf8
Source avec Zip [VBA] SCROLLER UNE LISTBOX AVEC LA MOLETTE DE LA SOURIS PAR ... par Philippe734
Source avec Zip Source avec une capture TOOLTIPTEXT QUI AFFICHE L'ITEM D'UN LISTBOX QUE SURVOLE LA S... par jack
FAIRE GLISSER UN OU PLUSIEUR FICHER DANS UNE LIST BOX par CtHuLhU50

Commentaires et avis

Commentaire de Saros le 01/01/2005 13:37:49

Astucieux, je trouve :)

Commentaire de hvb le 02/01/2005 22:13:40

merci de me citer, c'est honnête. :)

et tu as eu raison de le remanier avec l'evenement mouse_move, c'est plus intuitif pour l'utilisateur.
tu pourrais aussi remanier la methode pour plusieurs éléments maintenant !

Commentaire de olid le 06/01/2005 13:14:03

Simple, efficace, merci :o)

Commentaire de cresus18 le 06/01/2005 14:54:03

je vous remercie tous pour vos feedbacks, content que ça vous plaise.

Par contre hvb, désolé mais je n'ai vraiment que peu de temps libres pour programmer et j'ai mon programme à finir en priorité. Peut être plus tard...

Bonne prog à tous !

Commentaire de soldier8514 le 13/07/2005 22:23:44

simple et efficace ! on pourrais peut etre  éviter  de redéclarer à chaque mouse_move les variables suivantes :

# Dim nouveau As Integer 'nouvel index de la souris en "temps réel"
# Dim temp As String 'nom de l'élément de l'ancien index

sinon rien à dire sinon bravo

Commentaire de themadeone le 12/02/2008 01:30:21

j'ai un ptit probléme avec ton code , c'est que
Private Sub Liste1_MouseDown(button As Integer, shift As Integer, x As Single, y As Single)
ancien_index = Liste1.ListIndex
End Sub
ne veut pas marcher!:s:s
stp!si vous pouvez m'aider ca serai gentil de votre part!

Commentaire de cresus18 le 13/02/2008 23:37:45

La seule raison plausible qui me vient à l'esprit serait que tu n'ais pas déclaré la variable 'ancien_index' globale afin de la rendre visible partout dans ton code... Sinon, si le nom de ta Sub est 'Liste1_MouseDown', est-ce que ta liste a bien le même nom 'Liste1' ?

Ajoutes cette ligne 'Debug.Print (ancien_index)' dans la Sub Liste1_MouseMove(...) à l'intérieur de la 2ème boucle IF pour vérifier (dans la fenètre 'immediate') que la variable 'ancien_index' ait gardé sa valeur.

A part ça je ne vois pas, ou bien le problème vient d'ailleurs.

Commentaire de themadeone le 13/02/2008 23:45:09

Non!l nom d mon listbox est listbox1 ce qui fai que ancien_index=listbox1.listindex
mais il souligne sur listindex par ce quel ne figure pas!!!

 Ajouter un commentaire


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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales