- •Лабораторная работа № 6
- •Лабораторная работа 7
- •1. Домашнее задание
- •Лабоаторная работа №8
- •Лабораторная работа № 9 Работа с массивами в среде программирования «Delphi»
- •1. Теоретическая часть Реакция на события от мыши и клавиатуры
- •Интерфейс Drag&Drop
- •2. Лабораторные задания и методические указания по их выполнению
- •Лабораторная работа № 10
- •1. Теоретическая часть
- •Доступ к файлам
- •Подпрограммы для работы с файлами
- •Текстовые файлы
- •Подпрограммы для работы с текстовыми файлами
- •Подпрограммы для работы с типизированными файлами
- •TOpenDialog и tSaveDialog
- •2. Лабораторные задания и методические указания по их выполнению
- •394026 Воронеж, Московский просп., 14
Интерфейс Drag&Drop
Операционная система Windows широко использует специальный прием связывания программ с данными, который называется Drag&Drop (перетащи и отпусти). Такой прием в проводнике Windows используется для копирования или перемещения файлов, а также для запуска обрабатывающей программы. Если, например, файл с расширением DOC "перетащить" на пиктограмму WinWord, автоматически запустится текстовый редактор Word for Windows и в его окне появится текст из этого файла.
В Delphi реализован собственный интерфейс Drag&Drop, позволяющий
22
компонентам обмениваться данными путем "перетаскивания" их мышью. Этот интерфейс определяется двумя свойствами и тремя событиями, доступными каждому видимому компоненту.
Свойство
TDragMode = (dmManual, dmAutomatic);
property DragMode: TDragMode;
о
24
Свойство
property DragCursor: TCursor;
о
26
Событие
TDragState = (dsDragEnter, dsDragLeave, dsDragMove);
TDragOverEvent = procedure(Sender, Source: TObject;
X, Y: Integer; State: TDragState; var Accept: Boolean) of object;
property OnDragOver: TDragOverEvent;
возникает в момент перемещения указателя мыши "с грузом" над компонентом. Здесь Sender - компонент, который возбудил событие (обычно это Self - сам компонент-получатель; при ручном управлении механизмом Drag&Drop это может быть не так); Source - компонент-отправитель "груза"; X, Y - текущие координаты указателя мыши в пикселях клиентской области компонента; State - состояние указателя (dsDragEnter - только что появился над компонентом;
dsDragLeave - только что покинул компонент или была отпущена кнопка мыши; dsDragMove - перемещается над компонентом). В параметре Accept обработчик сообщает, готов ли компонент принять данные.
Событие
TDragDropEvent = procedure(Sender, Source: TObject;
X, Y: Integer) of objects-property OnDragDrop: TDragDropEvent;
означает, что пользователь "бросил" данные на компонент.
Параметры обработчика совпадают по назначению с одноименными параметрами OnDragOver.
Наконец, при завершении перетаскивания (вне зависимости от того, приняты данные или нет) возникает событие
TEndDragEvent = procedure(Sender, Target: TObject;
X, Y: Integer) of object-property OnEndDrag: TEndDragEvent;
23
где Sender - отправитель данных; Target - получатель данных или NIL, если никто не принял "посылку"; X, Y - координаты мыши в момент отпускания левой кнопки.