• Новости
  • Темы
    • Экономика
    • Здоровье
    • Авто
    • Наука и техника
    • Недвижимость
    • Туризм
    • Спорт
    • Кино
    • Музыка
    • Стиль
  • Спецпроекты
  • Телевидение
  • Знания
    • Энциклопедия
    • Библия
    • Коран
    • История
    • Книги
    • Наука
    • Детям
    • КМ школа
    • Школьный клуб
    • Рефераты
    • Праздники
    • Гороскопы
    • Рецепты
  • Сервисы
    • Погода
    • Курсы валют
    • ТВ-программа
    • Перевод единиц
    • Таблица Менделеева
    • Разница во времени
Ограничение по возрасту 12
KM.RU
Рефераты
Главная → Рефераты → Информатика, программирование
  • Новости
  • В России
  • В мире
  • Экономика
  • Наука и техника
  • Недвижимость
  • Авто
  • Туризм
  • Здоровье
  • Спорт
  • Музыка
  • Кино
  • Стиль
  • Телевидение
  • Спецпроекты
  • Книги
  • Telegram-канал

Поиск по рефератам и авторским статьям

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

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

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

В этой статья я расскажу, как реализовать перетаскивание файлов на форму... Рассмотрим на примере текстового редактора с многооконным интерфейсом, при перетаскивании файлов на главную форму которого будут открываться 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/

Дата добавления: 05.10.2004

База рефератов на портале KM.RU существует с 1999 года. Она пополнялась не только готовыми рефератами, докладами, курсовыми, но и авторскими публикациями, чтобы учащиеся могли использовать их и цитировать при самостоятельном написании работ.


Это популяризирует авторские исследования и научные изыскания, что и является целью работы истинного ученого или публициста. Таким образом, наша база - электронная библиотека, созданная в помощь студентам и школьникам.


Уважаемые авторы! Если Вы все же возражаете против размещения Вашей публикации или хотите внести коррективы, напишите нам на почту info@corp.km.ru, мы незамедлительно выполним Вашу просьбу или требование.


официальный сайт © ООО «КМ онлайн», 1999-2025 О проекте ·Все проекты ·Выходные данные ·Контакты ·Реклама
]]>
]]>
Сетевое издание KM.RU. Свидетельство о регистрации Эл № ФС 77 – 41842.
Мнения авторов опубликованных материалов могут не совпадать с позицией редакции.

Мультипортал KM.RU: актуальные новости, авторские материалы, блоги и комментарии, фото- и видеорепортажи, почта, энциклопедии, погода, доллар, евро, рефераты, телепрограмма, развлечения.

Карта сайта


Подписывайтесь на наш Telegram-канал и будьте в курсе последних событий.


Организации, запрещенные на территории Российской Федерации
Telegram Logo

Используя наш cайт, Вы даете согласие на обработку файлов cookie. Если Вы не хотите, чтобы Ваши данные обрабатывались, необходимо установить специальные настройки в браузере или покинуть сайт.