![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Подскажите как реализуется такая фишка, например на форме есть Edit, на него перетаскиваем файл из какой нибудь папки, и в Edite появляется путь к нему. Как отлавливается это перетаскивание?
|
#2
|
|||
|
|||
![]() Обработка сообщения WM_DROPFILES, кажется.
Код:
public { Public declarations } procedure CreateParams(var Params: TCreateParams); override; procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES; ... procedure TMainForm.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); Params.ExStyle := Params.ExStyle or WS_EX_ACCEPTFILES; end; procedure TMainForm.WMDropFiles(var Message: TWMDropFiles); var I : Integer; FileCount : Integer; FileName : Array [0..255] of Char; begin inherited; FileCount := DragQueryFile(Message.Drop, $FFFFFFFF, Nil, 0); // how many files are dropped For I := 0 to FileCount - 1 Do // for all the file in the list Begin DragQueryFile(Message.Drop, I, FileName, 256); // get the FileName (max characters 255 + #0) If FileExists(FileName) Then Begin // Add your code here... End; End; DragFinish(Message.Drop); // Free resources end; |
#3
|
|||
|
|||
![]() Круто, спасибо, работает) тока еще надо добавить модуль ShellAPI и такое сообщение получать может только главная форма. А с папками аналогично? или что то другое? Перетаскивал папку ничего не происходило
|
#4
|
|||
|
|||
![]() Код:
FileCount := DragQueryFile(Message.Drop, $FFFFFFFF, Nil, 0); // how many files are dropped For I := 0 to FileCount - 1 Do // for all the file in the list Begin DragQueryFile(Message.Drop, I, FileName, 256); // get the FileName (max characters 255 + #0) If FileExists(FileName) Then Begin // Add your code here... End; End; По сути вот здесь как раз и говориться что принемаеться только фаилы) или как вариант вот здесь попробовать Код:
If FileExists(FileName) Then Begin // Add your code here... End; ExtractFileDir Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя. Последний раз редактировалось Alexo, 31.10.2008 в 22:57. |
#5
|
|||
|
|||
![]() ExtractFileDir по логике вообще не подходит.
и вообще я так понимаю за прием фала отвечает процедура DragQueryFile, ей должна быть аналогичная с каталогом. |
#6
|
|||
|
|||
![]() А как сделать что б в проге был список файлов директории и в нее копировать можно было путем перемещения файла в програму.
|