Тема: Drag and Drop
всем привет!
хочу штоб при перетаскивание файла с компа в текстовое поле(на форме), текстовое поле показало полный путь к этому файлу.... Вопрос: кто знает как сделать?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Drag and Drop
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
всем привет!
хочу штоб при перетаскивание файла с компа в текстовое поле(на форме), текстовое поле показало полный путь к этому файлу.... Вопрос: кто знает как сделать?
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. Подсветка синтаксиса храмает
всё ещё пробую запустить код, не выходит....
куда этот кусок запихать?:
If True Then
DragAccept Text1.hWnd, True
Watch = True
WatchFiles Text1
Else
DragAccept Text1.hWnd, False
Watch = False
End If
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
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
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Drag and Drop
Форум работает на PunBB, при поддержке Informer Technologies, Inc