Большинство программ, преднозначенных для работы с текстом, предоставляют
пользователю возможность перетаскивать имена файлов из "Проводника" (или других
программ) в Memo или другой компонент, содержащийся в приложении. о умолчанию
Delphi не позволяет перемещать файлы с помощью мыши, но, приложив небольшие
усилия, такую возможность можно реализовать.
Первое, что вы должны сделать, - сообщить системе Windows о том, что ваша
программа готова обрабатывать файлы, перемещенные из другого приложения с
помощью мыши. Для этого достаточно включить в обработчик события OnCreate формы
следующее выражение:
DragAcceptFiles(Handle,True);
Кроме того вы должны указать модель ShellAPI в директиве uses.
Для любого окна, в котором была вызвана процедура DragAcceptFiles,
справедливо следующее. Когда вы перетаскиваете имя файла на ваше приложение и
отпускаете кнопку мыши, Windows посылает этому окну сообщение wm_DropFiles.
Сооьщение сопровождается именем файла. Обработчик этого сообщения нужно
включитьв защищенный раздел класса формы. например, в объявлении класса формы
между ключвыми словами private и public добавьте следующие строки:
protected
procedure WMDropFiles (var Msg: TMessage);
message wm_DropFiles;
И наконец-то пример самой процедуры, при помощи которой будет происходить
обработка файла:
protected
procedure WMDropFiles (var Msg: TMessage);
message wm_DropFiles;
И наконец-то пример самой процедуры, при помощи которой будет происходить
обработка файла:
procedure TForm1.WMDropFiles(var Msg: TMessage);
Var
Filename: array[0..256] of char;
begin
DragQueryFile(THandle(Msg.WParam),0,Filename,SizeOf(Filename));
// Теперь в переменной Filename будет находиться путь
// к перетаскиваемому файлу. Далее вы можете выполнять с этим файлом, зная
// его путь, все что угодно.
//Например: Загрузить его в Memo
Memo1.lines.loadfromfile(Filename);
//Сообщаем об окончании претаскивания
DragFinish(THandle(Msg.WParam));
end;
|