![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А как реализовать drag&drop из, например, проводника в свою прогу? [D5, D6, Win95/98, WinME, NT4, Win2k, WinXP]
Kostyanych © (2002-03-23 00:46:00)Ну чтобы была возможность что-то сделать с файлом, который пользователь притащил в форму.
VID (2002-03-24 14:22:00) [1]
TO Anatoly Podgoretsky:
Этот пример из одной моей древней программы, там всё отлично работает
Anatoly Podgoretsky (2002-03-24 10:44:00) [2]Согласиться - DragAcceptFiles
Отказаться - DragFinish
Я послал статью для FAQ, скоро появится на сайте в должном разделе.
Кроме указанных ошибок, еще в приведенных примерах и неправильный вызов функции, неверные параметры, видимо пример скопирован откуда без должного анализа на политкорректность.
aus (2002-03-24 02:18:00) [3]Есть хороший пример в ...Demos\RichEdit, проще намного.
Kostyanych (2002-03-23 23:28:00) [4]Хм, а как ОС то сообщить, что я согласен на Drag&Drop ?
Компонент сейчас поищу.
Anatoly Podgoretsky (2002-03-23 10:10:00) [5]Ошибки типа возможного AV сам исправишь, не помешает также сообщить ОС что ты согласен на Drag&Drop и отказаться когда не нужно.
VID (2002-03-23 02:37:00) [6]private
...
procedure WMDROPFILES(var Message: TWMDROPFILES); message WM_DROPFILES;
...
Var DropedFile:String;
procedure TForm1.WMDROPFILES(var Message: TWMDROPFILES);
var
NumFiles : longint;
i : longint;
buffer : array[0..255] of char;
begin
{How many files are being dropped}
NumFiles := DragQueryFile (Message.Drop,0,nil,0);
{Accept the dropped files}
for i := 0 to (NumFiles - 1) do
begin
DragQueryFile(Message.Drop,i,@buffer,sizeof(buffer));
//Вот оно, полное имя брошенного файла под номером I
dropedfile:=buffer;
end;
END;
Однако, гораздо культурнее использовать спец компоненты, например компонент GLDropFiles, входящий в пакет G.L.A.D.