Тема: Drag and Drop

всем привет!
хочу штоб при перетаскивание файла с компа в текстовое поле(на форме), текстовое поле показало полный путь к этому файлу.... Вопрос: кто знает как сделать?

Re: Drag and Drop

If True Then
    DragAccept Text1.hWnd, True
    Watch = True
    WatchFiles Text1
Else
    DragAccept Text1.hWnd, False
    Watch = False
End If
Option Explicit
Private Declare Sub DragAcceptFiles Lib "shell32.dll" (ByVal hWnd As Long, ByVal fAccept As Long)
Private Declare Sub DragFinish Lib "shell32.dll" (ByVal HD_ROP As Long)
Private Declare Function DragQueryFile Lib "shell32.dll" Alias "DragQueryFileA" (ByVal HD_ROP As Long, ByVal UINT As Long, ByVal lpStr As String, ByVal ch As Long) As Long
Private Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg As MSG, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As Long
Private Type POINTAPI
X As Long
Y As Long
End Type
Private Type MSG
hWnd As Long
Message As Long
wParam As Long
lParam As Long
time As Long
pt As POINTAPI
End Type
Private Const PM_REMOVE As Long = &H1
Private Const WM_DROPFILES As Long = &H233
Public Watch As Boolean

Public Sub WatchFiles(ctrl As Control)
    Dim Message As MSG, HD_ROP As Long, FileName As String * 255
    Dim FileNums As Long, FileCounter As Long, Lenth As Long
    Do While Watch = True
        PeekMessage Message, ctrl.hWnd, 5000, 5000, PM_REMOVE
        If PeekMessage(Message, ctrl.hWnd, WM_DROPFILES, WM_DROPFILES, PM_REMOVE) Then
            HD_ROP = Message.wParam
            FileNums = DragQueryFile(HD_ROP, True, FileName, 3)
                For FileCounter = 1 To FileNums
                    Lenth = DragQueryFile(HD_ROP, FileCounter - 1, FileName, 255)
                    ctrl.Text = Left(FileName, Lenth)
                Next FileCounter
        DragFinish (HD_ROP)
        End If
        DoEvents
    Loop
End Sub

Public Sub DragAccept(hWnd As Long, Accept As Boolean)
    DragAcceptFiles hWnd, Accept
End Sub

p.s. Защита форума не порзволяет использовать слова содержащие типа ДРОП английскими буквами :) так что пришлось исключать имена переменных содержащих SQL. Подсветка синтаксиса храмает

Re: Drag and Drop

всё ещё пробую запустить код, не выходит....

куда этот кусок запихать?:
If True Then
    DragAccept Text1.hWnd, True
    Watch = True
    WatchFiles Text1
Else
    DragAccept Text1.hWnd, False
    Watch = False
End If

Re: Drag and Drop

If True Then 
    DragAccept Text1.hWnd, True 
    Watch = True 
    WatchFiles Text1 
Else 
    DragAccept Text1.hWnd, False 
    Watch = False 
End If

Этой конструкцией я хотел показать, что можно отключать ожидания файла.
Ну если у вас текстовое поле на форме, то перед тем как хотите задропать файлик запустите код, либо когда открыли форму.

   DragAccept Text1.hWnd, True 
   Watch = True 
   WatchFiles Text1 

Re: Drag and Drop

Option Explicit

Private Sub Form_Load()
Text1.OLEDropMode = 1
End Sub
Private Sub Text1_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim i As Long
If Data.Files.Count < 1 Then
Else
    For i = 1 To Data.Files.Count
        Text1.Text = Data.Files(i)
    Next i
End If
End Sub

Re: Drag and Drop

спасибо))), но хватило вот этого куска....