![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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 Последний раз редактировалось Alexo, 31.10.2008 в 22:57. |
|
#5
|
|||
|
|||
|
ExtractFileDir по логике вообще не подходит.
и вообще я так понимаю за прием фала отвечает процедура DragQueryFile, ей должна быть аналогичная с каталогом. |
|
#6
|
|||
|
|||
|
А как сделать что б в проге был список файлов директории и в нее копировать можно было путем перемещения файла в програму.
|