Перетаскивание данных (тексты, рисунки, таблицы, деревья файлов и т.д.) с использованием OLE
Имеется возможность перетаскивать наборы данных (тексты, рисунки, таблицы, деревья файлов и т.д.) с применением OLE. При этом различают перемещение данных (после перемещения данные в источнике удаляют) и копирование данных. Для обеспечения перетаскивания действия (начало перетаскивания, сбрасывание) должны быть запрограммированы. Рассматриваются два объекта: источник - OLEDrag и приeмник - OLEDrop. В случае автоматического перетаскивания свойствам OLEDragMode, OLEDropMode элементов управления, например, Рис. 6.6. OLE TextBox, Image должно быть присвоено значение vbOLEDragAutomatic (в окне свойств), альтернативно (ручное перетаскивание) - vbManual. Установки свойств OLEDragMode/OLEDropMode могут быть сделаны и программным путeм. Ниже рассматриваются параметры объекта DataObject, содержащего перетаскиваемые данные. Он фигурирует в процедурах обработки событий, в которые передаeтся параметр Data (см. код). Объект (аналогичен объекту Clipboard) имеет 4 метода: · SetData устанавливает данные в требуемом формате (vbCFText - текст, vbCFRTF расширенный текстовый формат, vbCFBitmap - растровое изображение vbCFFiles - список файлов и.т.д.), · GetFormat проверяет наличие данных в требуемом формате (сможет ли приeмник использовать данные), · Clear удаляет содержимое объекта, · GetData копирует данные в требуемом формате из DataObject в приeмник. Ниже приводится перечень параметров элементов управления, обеспечивающих перетаскивание, затем даeтся практическая работа 42 для усвоения материала: Метод: OLEDrag - начать перетаскивание, Свойства: OLEDragMode/OLEDropMode - установить элемент управления в качестве источника/приeмника, OLEDropAllowed - установить разрешение сбрасывания OLE в контейнере. События: OLEDragDrop происходит при сбрасывании-OLE в контейнер OLE, синтаксис: Private Sub Object_OLEDragDrop(Data As DataObject, Effect As Long, Button As Integer, Shift As Integer, x As Singlе, y As Single). Здесь: · DataObject - см. выше, · Effect (действие) определяет предпринимаемые после завершения перетаскивания действия, см., например, процедуру:Private Sub Image1_OLEDragDrop(:), · Button определяет (нажатую при перетаскивании) кнопку мыши, · Shift определяет использование при перетаскивании клавиш Shift, Ctrl, Alt, · x, y - координаты курсора мыши. OLEDragOver происходит при перемещении одного объекта над другим, OLEGiveFeedback происходит после событияOLEDragOver; может быть использовано для создания визуальных признаков действий, OLEStartDrag происходит или для источников с ручным режимом перетаскивания или при инициализации автоматического перетаскивания, OLESetData происходит для источника после применения приeмником метода GetData, OLECompleteDrag происходит после перемещения объекта из источника в приeмник.
|