![]() |
Перетаскивание данных (тексты, рисунки, таблицы, деревья файлов и т.д.) с использованием OLEDate: 2015-10-07; view: 436. В. OLE А. Элементарная операция OLE Практическая работа 41. OLE Последовательность действий: · Создать на форме элемент управления OLE для создания, например, связанного объекта, · создать соответствующий файл, например, A:\ole1.xls (см. код, данный ниже), · ввести код, данный ниже, · стартовать проект, сделать щелчок на форме, наблюдать результат. Private Sub Form_Click()OLE1.Class = "Worksheet" ' приложение ExcelOLE1.SourceDoc = "A:\ole1.xls" ' имя файла' использовать указанный блок данныхOLE1.SourceItem = "A1A3:B1B3" OLE1.Action = 1 ' создать связанный объектEnd SubРассматривается загрузка объектов (см. процедуру Form_Load () в OLE-контейнер и реализация (по желанию пользователя) связывания/внедрения (см. процедуру Public Sub LinkEmb(FileName As String, Embed As Boolean) ). Последовательность действий: 1. создать объекты: текстовый файл (приложение Word), таблицу (приложение Excel), базу данных (приложение Access), рисунок (приложение Paint), 2. создать на форме элемент управления OLE (Name = ole1), два переключателя (Name = opt1 и opt2 соответственно, Caption = Link и Embed cоответственно), командную кнопку (Name = cmd1, Caption = Load Object), поле списка (Name = lst), табл. 6.1 3. ввести код данный ниже, стартовать проект, 4. маркировать в поле списка lst, элемент, например, "Docum.Word", сделать щелчок на требуемом переключателе (Link или Embedding), затем сделать щелчок на командной кнопке "Load Object". В поле элемента OLE выводится соответствующий файл, 5. сделать двойной щелчок в поле OLE на введeнном объекте. В зависимости от того, какой переключатель использован (Link или Embed), вставленный объект выводится или в приложении Word для редактирования, или появляется возможность редактировать его средствами того приложения, в котором он находится. В случае Link внесeнные (пользователем) изменения остаются в исходном файле. Это можно проверить, загрузив файл в приложение Word. ' создать список объектов для загрузки в OLE-контейнерPrivate Sub Form_Load()With lst.AddItem ("Docum.Word").AddItem ("Table.Excel").AddItem ("Picture.Paint").AddItem ("Database.Access")End WithEnd Sub' выбор загружаемого объекта (маркировать его в списке, см.:' Select Case lst.ListIndex) и определение режима ' связывание/внедрение с учётом состояния переключателей Private Sub cmd1_Click()Select Case lst.ListIndexCase 0: LinkEmb "A:\nin.doc", opt1.ValueCase 1: LinkEmb "A:\nin.xls", opt1.ValueCase 2: LinkEmb "A:\nin.bmp", opt1.ValueCase 3: LinkEmb "A:\nin.mdb", opt1.ValueEnd SelectEnd Sub' в зависимости от значений переданных аргументов'реализовать связь/внедрениеPublic Sub LinkEmb(FileName As String, Embed As Boolean)If Embed Thenole1.CreateEmbed FileNameElseole1.CreateLink FileNameEnd IfEnd SubИмеется возможность перетаскивать наборы данных (тексты, рисунки, таблицы, деревья файлов и т.д.) с применением OLE. При этом различают перемещение данных (после перемещения данные в источнике удаляют) и копирование данных. Для обеспечения перетаскивания действия (начало перетаскивания, сбрасывание) должны быть запрограммированы. Рассматриваются два объекта: источник - OLEDrag и приeмник - OLEDrop. В случае автоматического перетаскивания свойствам OLEDragMode, OLEDropMode элементов управления, например,
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мник.
|