Referat.me

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

Вид работы: доклад

Рубрика: Информатика и программирование

Размер файла: 14.17 Kb

Скачать файл: referat.me-140472.docx

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

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

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

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

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

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

Похожие работы

  • Анимация без лишних усилий

    Отличные результаты можно получить используя только функции WinAPI или возможности Delphi. Я рассмотрю несколько таких необычных возможностей, причем самый большой пример будет состоять из менее чем 10 (!) строк кода.

  • Создание форм в Microsoft Access 2003

    Методы создания главной кнопочной формы с целью навигации по базе данных, так как она может использоваться в качестве главного меню БД. Создание подчиненных кнопочных форм: отчеты, формы, запросы. Элементы кнопочной формы запроса "Успеваемость студентов".

  • Описание файлов, создаваемых Дельфи

    Вы когда ни будь задумывались о том, что создает Дельфи в папке с исходниками проекта? Да и нужен ли весь этот абсолютно бесполезный, для рядового программиста, "мусор"? Пора призадуматься. В этой мини-статье я расскажу о назначении таких файлов.

  • Предотвращение запуска 2-x копий программы

    Известно, что Windows - многозадачная система. Это конечно хорошо. Но обратной стороной многозадачности является то, что одновременно можно запустить несколько копий одного и того же приложения.

  • Разработка цикла лабораторных работ по основам работы в WINDOWS 2000

    МИРЭА (технический университет) Контрольная работа по курсу “Информатика” Тема: Разработка цикла лабораторных работ по основам работы в WINDOWS 2000.

  • Работа с каталогами (лабораторная работа)

    Лабораторная работа №1 Т е м а : Р а б о т а с к а т а л о г а м и Задание: 1)Просмотр корневых каталогов и подкаталогов дисков командами DIR,DIR/W,DIR/P. В отчете представить 3-4 характерные строки отображения содержимого каталогов при выполнении команд DIR(DIR/p) и DIR/W, т.е. показать форму отображения имен файлов и каталогов.

  • Изучение возможностей создания MDI-приложений (multiple document interface)

    Возможности создания MDI-приложений, их преимущества. Основные приемы работы с записью информации в файл, экспорт данных в приложения Microsoft Office с помощью использование технологии OLE, на примере MS Excel интегрированного пакета MS Office.

  • Знакомство с ОС Windows

    Описание сновных достоинств операционной системы Windows. Удобный графический интерфейс, высокая надежность работы, поддержка широкого спектра современных устройств, богатые возможности персонализации настроек и глубокая интеграция с Интернетом.

  • Построение многооконных приложений для Windows

    После запуска C++ Builder в вашем распоряжении имеется только одна форма Form1 – стартовая форма будущего приложения для Windows.

  • Создание базы данных в Access и работа с ней

    Как создавать базы данных и как с ними работать.