Annuler un drag/drop

[Résolu]
Signaler
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
-
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013
-
Bonjour

Mon problème est le suivant :
J'ai une ListBox, depuis laquelle je peux OLEDraguer des items vers d'autres fenêtres - jusque la aucun soucis, ca marche nickel. Mais cette listbox possède également un menu contextuel (via PopupMenu) qui apparait avec le clic droit... Le problème, c'est qu'une fois que j'ai choisit mon option dans le menu contextuel, je dois cliquer dans le vide pour arreter l'OLEDrag que le clic droit a initialisé afin que la fonction du menu se lance :(
Commet faire pour que l'OLEDrag ne s'active pas sur le clic droit ? ou que le clic droit annule l'OLEDrag ?

Merci d'avance !

6 réponses

Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
si tu passes le OLEDragmode en manuel, il te suffira d'appeler ListFichiers.OLEDrag pour déclencher le drag&drop ...

tu as juste a placer l'instruction ou ca va bien...
(pense a renseigner le AllowedEffect)



Private Sub Form_Load()
Dim sFileName As String
Timer1.Enabled = False
Timer1.Interval = 250

sFileName = Dir$(App.Path & "\*")
Do While LenB(sFileName)
List1.AddItem App.Path & "" & sFileName
sFileName = Dir$()
Loop
End Sub

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Timer1.Enabled = True
End If
End Sub

Private Sub List1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbLeftButton Then
Timer1.Enabled = False
End If
End Sub

Private Sub List1_OLEStartDrag(Data As DataObject, AllowedEffects As Long)
Dim i As Long
For i = 0 To List1.ListCount - 1
If List1.Selected(i) Then
Data.Files.Add List1.List(i)
End If
Next i
Data.SetData , vbCFFiles
AllowedEffects = vbDropEffectCopy
End Sub

Private Sub Timer1_Timer()
Timer1.Enabled = False
List1.OLEDrag
End Sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
comment inities-tu le Drag ? (code)
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013

Le Drag s'initialise tout seul dés que je clic sur la liste
Jai mis dans les propriété de la ListBox "OLEDragMode = 1 (Automatic)"

Ensuite ma sub c'est :

Private Sub ListFichiers_OLEStartDrag(Data As DataObject, AllowedEffects As Long)

Dim EnCour As Long
    Data.Clear
    For EnCour = 0 To ListFichiers.ListCount - 1
        If ListFichiers.Selected(EnCour) = True Then
        Data.Files.Add ListFichiers.List(EnCour)
        End If
    Next EnCour
Data.SetData , vbCFFiles

End Sub
Messages postés
17286
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
23 décembre 2019
69
passes le en Manuel, et lances le par toi même, après validation du bouton pressé (que ca soit bien le bouton gauche)

suffit d'appeler ListFichiers.OLEDrag
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013

Pourrais je avoir plus d'info sur "ListFichiers.OLEDrag" ? car son fonctionnement m'est inconnu et pour l'instant ca ne donnc rien ^^'
Messages postés
56
Date d'inscription
vendredi 31 janvier 2003
Statut
Membre
Dernière intervention
26 mai 2013

Ca marche comme ca ^^
Merci beaucoup pour tes lumières, me voila en possession d'un nouvel outil !