violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 2010
-
12 déc. 2005 à 21:20
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 2008
-
13 déc. 2005 à 07:28
Violent Ken
Salut, j'ai un problème vachement bizarre : j'ai créé une fonction qui permet de faire du drag & drop entre 2 listes pour copier des éléments de leur contenu. Oui mais voilà, à partir du 832eme élément de la liste 1, le drag & drop devient difficile à la souris, voire impossible quand list1.listcount>845. Je comprend vraiment rien , une idée ??
Merci, @+
A voir également:
Drag & drop et listbox : problème incompréhensible...
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 12 déc. 2005 à 22:32
Tu ne peux pas faire de Drop dans une FileListBox. Elle contient le
contenu d'un dossier, tu ne peux pas y ajouter d'items (sauf en
rajoutant des fichiers dans le dossier évidemment)
Pour ajouter des éléments d'une FileListBox dans une ListBox, il faut faire ceci :
Private Sub List1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim ll As Long
For ll = 1 To Data.Files.Count
List1.AddItem Data.Files(ll)
Next ll
End Sub
avec List1 = La listbox qui reçoit les infos, celle sur laquelle on drope.
Manu -------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200824 12 déc. 2005 à 21:36
Effectivement, c'est curieux. Une seule explication : c'est ton code
qui génère ce plantage à un indice aussi "exotique". Dépose ton code,
on y verra plus clair.
Pour info, voici un petit Drag & Drop tout con, qui fonctionne bien
avec 845 éléments, et qui fonctionne encore si on en rajoute mille de
plus ;o)
Private Sub Form_Load()
Dim ll As Long
For ll = 0 To 1846
List1.AddItem "Element " & ll
Next ll
List1.OLEDragMode = 1
List2.OLEDropMode = 1
End Sub
Private Sub List2_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
List2.AddItem Data.GetData(vbCFText)
End Sub
Manu -------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 12 déc. 2005 à 21:45
Violent Ken
Je vais essayer ton code, fichtrement plus simple que le mien !!!
Voici mon code :
je précise qu'il est difficilement exploitable car je l'ai fait il y a (tres tres) longtemps, avec un niveau en VB (tres) inférieur à maintenant. Personnellement je ne m'y retrouve pas vraiment non plus :
Private Sub list1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
On Error Resume Next
Aa2 = Data.GetData(1)
Dim E As Boolean
Dim o, k, j, P$
P$ = "1"
E = False
k = 0
'aa2 est du type : "C:\fichier.bmpC:\fichier2.avi"
While Not E = True
k = 1
j = j + 1
While Not Asc(P$) = 13
k = k + 1
P$ = Mid$(Aa2, k, 1)
If Len(P$) = 0 Then GoTo Termin
Wend
If (j / 100) = Int(j / 100) Then DoEvents
P$ = "1"
List1.AddItem Mid$(Aa2, 1, k - 1), 0
Aa2 = Mid$(Aa2, k + 2, Len(Aa2) - (k + 1)) If Len(Aa2) <2 Then E True
Wend
Termin
List1.AddItem Aa2, 0 'on ajoute le dernier, qui échappait à l'algorithme
End Sub
Je suis sur que c'est pas clair du tout ....
enfin merci quand même !
@+
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 12 déc. 2005 à 22:03
Violent Ken
J'ai essayé le tien. Il marche très bien pour un élément. Mais l'adapation pour le multiline risque de faire des dégats, tout comme avec mon algo. En effet, çà part globalement du même prinicipe.
Merci en tout cas de m'aider !
@+
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 12 déc. 2005 à 22:20
Violent Ken
Que demande le peuple ?
Bravo çà marche parfaitement ! Bien joué le coup du "split"
L'algo que je t'ai sorti date d'il y a un an et demi (c'est y a tres longtemps pour moi), je ne le comprend plus. Heureusement que je ne fait plus de truc dans ce genre :-) Mais j'ai quand même pas saisit d'où venait le bug ? A partir de 832 çà devenait "difficile", il fallait déplacer la souris doucement pour que çà marche, puis apres 845 c'était mission impossible...
Enfin, ton algo est court, propre et marche nickel. Parfait donc.
Grand merci !
Juste un truc : tu saurait comment faire un drag&drop entre une listbox et un filelistbox ? J'ai une erreur 461 avec getdata.
violent_ken
Messages postés1812Date d'inscriptionmardi 31 mai 2005StatutMembreDernière intervention26 octobre 20102 12 déc. 2005 à 22:59
Violent Ken
Je savais bien que l'on pouvais pas placer des objets dans la filelistbox. Ce que je cherchais, c'était comment utiliser la propriété Data, avec Data.Files pour mettre les éléments de la filelistbox dans la listbox. J'essayai data.getdata et çà ne marchait pas.
Enfin bon, le bout de programme que tu m'as fournis répond parfaitement à ma question !
Un grand merci pour ta rapidité, ta précision et la justesse de tes réponses ! Vraiment !
@+