VBA - Drag & Drop dans ListBox avec ScrollBar

VBA - Drag & Drop dans ListBox avec ScrollBar - VB/VBA/VBS - Programmation

Marsh Posté le 30-10-2006 à 10:59:45    

Bonjour,
 
J'ai fait un petit code permettant de drag & dropper des éléments d'une listbox, au sein de cete même list box, de facon à les ordonner à la main.
Ca fonctionne très bien, le code est simple et repose sur 3 private Sub :  
 
ListBox1_BeforDragOver
ListBox1_MouseMove
ListBox1_BeforeDropOrPaste
 
Le problème se pose lorsqu'un scroller apparait dans cette ListBox1 et que je ne peux pas voir A LA FOIS l'élément à déplacer ET l'endroit où le déplacer : p.ex, je mets le scroller tout en bas pour déplacer le dernier élément vers la première position.  
 
En effet, je voudrais que lorsque le curseur de ma souris arrive en "haut" de la liste (qui n'est pas le véritable haut, puisque le scroller est tout en bas), le scroller se déplace vers le haut.. comme dans les vrais programmes, quoi.
 
Le problème vient de la procédure :
 
ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As Single, ByVal y As Single)
 
Dim MyDataObject As DataObject
If Button = 1 Then
    Set MyDataObject = New DataObject
    Dim Effect As Integer
    MyDataObject.SetText TarifList.Value
    Effect = MyDataObject.StartDrag
End If
 
 
En effet, tant que je déplace ma souris dans la liste, sans cliquer sur un élément, la coordonnée Y de la souris évolue , mais lorsque je déplace un élément, au moment du clic, les coordonnées se figent.
 
Or jusqu'à présent, je me servais de ces coordonnées (Y en tous cas) pour les déplacements d'éléments et je pensais, pour faire défiler le scroller vers le haut, faire un truc du style :
 
if ListBox1.topindex>0 then
if Y=0 then ListBox1.topindex=ListBox1.topindex-1
end if
 
dans le ListBox1_MouseMove.
 
Mais comme je l'ai dit, le Y reste bloqué au moment du clic et n'évolue plus lors du "glissé" de l'élément.
 
Merci de votre aide.
 
 
 
 
 
 
 

Reply

Marsh Posté le 30-10-2006 à 10:59:45   

Reply

Marsh Posté le 30-10-2006 à 17:07:19    

C bon, j'ai trouvé.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed