PrinceSilk
Messages postés56Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention26 mai 2013
-
22 juil. 2008 à 10:47
PrinceSilk
Messages postés56Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention26 mai 2013
-
22 juil. 2008 à 12:03
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 ?
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 22 juil. 2008 à 11:48
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
PrinceSilk
Messages postés56Date d'inscriptionvendredi 31 janvier 2003StatutMembreDernière intervention26 mai 2013 22 juil. 2008 à 11:11
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