Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: LeandroA en 1 Octubre 2010, 04:34 am



Título: Drag and Drop, vbCFFiles, conocer la carpeta de destino
Publicado por: LeandroA en 1 Octubre 2010, 04:34 am
Hola, como podria hacer un drag and drop sobre una carpeta y poder conocer el destino de esta carpeta, para poder abrir un archivo en forma binarya.

si yo utilizo este metodo
Código:
Private Sub ListView1_OLEStartDrag(Data As ComctlLib.DataObject, AllowedEffects As Long)
    Dim i As Long
   
    For i = 1 To ListView1.ListItems.Count
   
        If ListView1.ListItems.Item(i).Selected = True Then
       
            Data.Files.Add ListView1.ListItems(i).Tag
            Data.SetData , vbCFFiles
           
        End If
       
    Next

End Sub

es nesesario que el archivo ya exista (ListView1.ListItems(i).Tag) pero esto me obliga a no poder continuar modificandolo.

mi nececidad es crearlo luego de haber hecho el drag and drop.

Es posible esto?


Título: Re: Drag and Drop, vbCFFiles, conocer la carpeta de destino
Publicado por: _katze_ en 1 Octubre 2010, 08:52 am
mira son las 4 am en argentina ! pero si tomas cada archivo cargado independientemente en un arrqay (?)
o q a cada archivo lo cargues en un straing para abrirlo ! noc si veo algo mejor te digo Lenadro

bye . tucuman !


Título: Re: Drag and Drop, vbCFFiles, conocer la carpeta de destino
Publicado por: raul338 en 4 Octubre 2010, 17:20 pm
Hola Leandro, investigando y experimentando un poco (encima que en google solo encontras info de Drag&Drop hacia algun control y no desde este hacia otro lado) llegue a esto:

Código
  1. Dim i As Long
  2. Dim path As String
  3.  
  4. Private Sub Form_Load()
  5.    lst.ListItems.Add , , "Hola"
  6.    lst.ListItems.Add , , "Adios"
  7.    lst.ListItems.Add , , "Bye"
  8.    lst.OLEDragMode = ccOLEDragAutomatic
  9. End Sub
  10.  
  11. Private Sub lst_OLEStartDrag(Data As ComctlLib.DataObject, AllowedEffects As Long)
  12.    For i = 1 To lst.ListItems.Count
  13.        If lst.ListItems.Item(i).Selected = True Then
  14.            path = App.path & "\" & lst.ListItems(i).Text & ".txt"
  15.            Open path For Output As #1
  16.            Print #1, lst.ListItems(i).Text
  17.            Close #1
  18.            Data.Files.Add path
  19.            Data.SetData , vbCFFiles
  20.        End If
  21.    Next
  22.    AllowedEffects = OLEDropEffectConstants.vbDropEffectMove
  23. End Sub
  24.  

See... como se aprecia se crea el archivo "en vivo" lo cual podra ralentizarlo un poco, pero bueno, es la unica forma que encontre :P