Доклад

Доклад Перетаскивание файлов на форму

Работа добавлена на сайт bukvasha.net: 2015-10-25

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 19.4.2025



Перетаскивание файлов на форму

Предводителев Сергей

В этой статья я расскажу, как реализовать перетаскивание файлов на форму... Рассмотрим на примере текстового редактора с многооконным интерфейсом, при перетаскивании файлов на главную форму которого будут открываться MDI-окна с уже открытыми в них файлами. Не будем далеко ходить, возьмем текстовый редактор из примеров, которые поставляются вместе с Delphi, и дополним его.

Итак, для начала надо зарегистрировать окно для приёма файлов, для этого в обработчике onCreate для главной формы напишем следующий код:

DragAcceptFiles(FrameForm.Handle, True);

Эта функция оп7исана в библиотеке ShellAPI, поэтому не забудьте его добавить в раздел uses. Первый параметр функции - handle регистрируемого окна, второй параметр - определяет можно перетаскивать файлы (True) или нет (False).

Теперь надо обрабатывать сообщение WM_DROPFILES. В разделе private добавим следующую строчку:

procedure WMDROPFILES(var Message: TWMDROPFILES); message WM_DROPFILES;

И соответственно напишем процедуру обработки сообщения:

procedure TFrameForm.WMDROPFILES(var Message: TWMDROPFILES);

var

Files: Longint;

I: Longint;

Buffer: array[0..MAX_PATH] of Char;

begin

Files := DragQueryFile(Message.Drop, $FFFFFFFF, nil, 0);

for I := 0 to Files - 1 do begin

DragQueryFile(Message.Drop, I, @Buffer, SizeOf(Buffer));

if FileExists(Buffer) then

with TEditForm.Create(Self) do

Open(Buffer);

end;

DragFinish(Message.Drop);

end;

В этой процедуре используется функция DragQueryFile. Вот её описание:

DragQueryFile(

HDROP hDrop, // handle структуры, перетащенных файлов

UINT iFile, // номер нужного файла

LPTSTR lpszFile, // буфер для возвращаемого FileName

UINT cch // размер буфера для FileName

);

Если iFile равен $FFFFFFFF, то функция возвращает количество перетащенных файлов.

Итак, в нашей процедуре сначала в переменную Files заносится кол-во перетащенных файлов, а затем мы просматриваем все FileName'ы и если данный файл существует, то открываем его.

Примечание. MATH_PATH - константа, которая задаётся в модуле Windows. Это, если я всё правильно понял ;), максимальное количество символов в FileName.

Функция DragFinish очищает память, которая использовалась для передачи FileName в приложение.

Ну вот и всё... Если что-то непонятно или здесь что-то не так, то пишите... разберёмся ;)

Внимание! Запрещается перепечатка данной статьи или ее части без согласования с автором. Если вы хотите разместить эту статью на своем сайте или издать в печатном виде, свяжитесь с автором.

Список литературы

Для подготовки данной работы были использованы материалы с сайта http://andrey.nnov.ru/



1. Реферат Исламский радикализм и его воздействие на национальную безопасность России
2. Реферат на тему Apathy Essay Research Paper What Is ApathyApathy
3. Курсовая на тему Обслуживание машины КОЭ315 ИКМ 1
4. Реферат на тему Культура разговорной речи
5. Реферат на тему Політична ідеологія Основні ідейно політичні теорії сучасності
6. Реферат на тему Love In Lanval Essay Research Paper Love
7. Реферат Экология 10
8. Кодекс и Законы Значимость учетной политики в условиях реформирования системы бухгалтерского учета
9. Реферат Фэнтези и субкультура толкинизма
10. Реферат Вексель 3