Перетаскивание файлов в приложение

Previous  Top  Next

    
 

 

Взято из FAQ: http://blackman.km.ru/myfaq/cont4.phtml

Иногда очень полезно избавить пользователя от лишних операций при открытии файла.

Он должен нажать на кнопку " Открыть" , затем найти интересующий каталог, выбрать файл.

Проще перетащить мышкой файл сразу в окно приложения.

Рассмотрим пример перетаскивания Drag & Drop в окно произвольного текстового файла,

который сразу же открывается в компоненте Memo1. Для начала в разделе Uses необходимо подключить модуль ShellAPI. В private области окна нужно вставить следующую строку:

 

procedure WMDropFiles(var Msg: TWMDropFiles); message WM_DROPFILES;//получение сообщений о переносе файла в окно приложения        

 

 

Процедура обработки этого сообщения будет выглядеть следующим образом:

 

Code:

procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);

 

{©Drkb v.3(2007): www.drkb.ru,

®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}

 

var

CFileName: array[0..MAX_PATH] of Char; // переменная, хранящая имя файла

begin

try

If DragQueryFile(Msg.Drop, 0, CFileName, MAX_PATH)> 0 then

// полу?ение пути файла

begin

Form1.Caption:=CFileName; // имя файла в заголовок окна

Memo1.Lines.LoadFromFile(CFileName); // открываем файл

Msg.Result := 0;

end;

finally

DragFinish(Msg.Drop); // отпустить файл

end;

end;

 

 

 

 

Для того, чтобы форма знала,

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

указать:

Code:

procedure TForm1.FormCreate(Sender: TObject);

 

{©Drkb v.3(2007): www.drkb.ru,

®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}

 

begin

DragAcceptFiles(Handle, True);

end;

 

 

©Drkb::03186

Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)

 

Взято с Vingrad.ru http://forum.vingrad.ru