Використання миші при роботі з файлами

(Або, як перетягувати файли в свою програму)

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;

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*