Использование мыши при работе с файлами
(или, как перетаскивать файлы в свою программу)
www.delphi.agava.ru
Большинство программ, преднозначенных для
работы с текстом, предоставляют пользователю
возможность перетаскивать имена файлов из
"Проводника" (или других программ) в Memo или
другой компонент, содержащийся в приложении. о
умолчанию Delphi не позволяет перемещать файлы с
помощью мыши, но, приложив небольшие усилия,
такую возможность можно реализовать.
Первое, что вы должны сделать, - сообщить
системе Windows о том, что ваша программа готова
обрабатывать файлы, перемещенные из другого
приложения с помощью мыши. Для этого достаточно
включить в обработчик события OnCreate формы
следующее выражение:
DragAcceptFiles(Handle,True);
Кроме того вы должны указать модель ShellAPI
в директиве uses.
Для любого окна, в котором была вызвана
процедура DragAcceptFiles, справедливо следующее.
Когда вы перетаскиваете имя файла на ваше
приложение и отпускаете кнопку мыши, Windows
посылает этому окну сообщение wm_DropFiles.
Сооьщение сопровождается именем файла.
Обработчик этого сообщения нужно включитьв
защищенный раздел класса формы. например, в
объявлении класса формы между ключвыми словами
private и public добавьте следующие строки:
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;
|