1. Выбрать Project\Components и перейти к закладке Insertable Objects.
2. Установить необходимый флажок типа объекта в появившейся диалоговой панели.
Например, можно добавить объект Excel Worksheet в панель инструментов, заполнив диалоговую панель Insertable Objects так, как показано на рисунке справа.
Теперь, при применении выбранного инструмента к форме соответствующий объект автоматически встраивается в приложение.
Доступ к объектам через пункт меню Project|References
Большинство современных OLE-êîìïîíåíòîâ приложений доступно через диалоговую панель, появляющуюся при вызове пункта меню Project|References. Эти библиотеки объектов очень полезны, так как они содержат описания всех объектов, методов и свойств, которые можно просмотреть при помощи Object Browser. Более того, всегда оказывается доступной справочная информация по используемым форматам команд из Object Browser. Например, если добавить подобным способом библиотеку объектов Excel в Visual Basic и затем использовать Object Browser для ее изучения, то можно одним взглядом определить необходимый синтаксис.
После того, как установлена ссылка на библиотеку объектов при помощи диалоговой панели ProjectIReferences, можно воспользоваться функцией CreateObject с предварительно определенной объектной переменной для создания такого объекта в коде программы. Ниже приведен пример кода для объекта электронной таблицы Excel:
Dim objExcel As Object
Set objExcel = CreateObject ("EXCEL.SHEET")
Приведенные выше две строки кода создают объектную переменную (в нашем случае она имеет имя objExcel). Эта объектная переменная может быть использована для управления электронной таблицей Excel.
Создание объектов, которые не поддерживаются библиотекой объектов
Библиотеки объектов не поддерживают некоторых объектов (таких, как Word 6.0); хотя они и поддерживают технологию OLE, однако их поведение еще недостаточно удовлетворительно. В частности, приложения, не поддерживающие библиотеки объектов, могут не давать информацию об объектах, их методах и свойствах. В таких случаях необходимо использовать функцию CreateObject для создания ссылки на объект. Например:
Dim objWordBasic As Object
Set objWordBasic = CreateObject ("Word.Basic")
(He надо забывать установить объектную переменную в значение Nothing после ее использования.)
Использование OLE в процессе разработки приложения
По сравнению с OLE 1.0 создание связей или встраиваний в процессе разработки приложения стало намного проще. По существу, необходимо только поработать с диалоговыми панелями, которые будут описаны в этом разделе.
После того, как пользователь добавит клиентский элемент управления OLE в форму, немедленно появится диалоговая панель. (Чем больше приложений установлено на компьютере, тем больше элементов будет видно.) На этой панели приведены названия всех приложений Windows, объекты из которых можно встроить в свое приложение. Можно иметь объекты, изображаемые значком, или же с видимыми данными в элементе управления OLE. Для этого необходимо установить флажок Display as Icon в правой части диалоговой панели. Два переключателя в левой части панели предназначены для указания того, предполагается ли работать с файлами, созданными соответствующими приложениями (связанные объекты) или требуется вызвать другое приложение для создания нового объекта (встраиваемые объекты). Если выбрать опцию Create from File ( для создания связи с объектом, хранящимся в файле), то на экране появится панель. Можно щелкнуть по кнопке Browse для открытия диалоговой панели, позволяющей выбрать необходимый файл. После того, как будут сделаны все необходимые действия, не надо забывать проверить флажок Link.
Примечание: Можно щелкнуть по клавише Cancel, если надо установить свойства OLE при помощи кода программы. В этом случае отпадает необходимость в работе с диалоговыми панелями. Несомненно, что если создать исполняемый файл с установленной в момент разработки приложения связью OLE, то размер этого файла будет намного больше, чем в случае установки связей OLE при помощи кода в момент выполнения приложения.
Меню Paste Special
Иногда бывает необходимо установить связь или встроить объект, используя информацию, хранящуюся в буфере папки обмена Windows, путем установки свойств SourceDoc и Sourceltem. Для этого сперва нужно скопировать данные из приложения в буфер папки обмена, воспользовавшись находящейся в приложении командой Copy. После этого следует использовать диалоговую панель Paste Special, которая всегда доступна во время разработки приложения при нажатии правой кнопки мышки, при условии, что фокус находится на элементе управления OLE. В появившемся всплывающем меню надо выбрать пункт Paste Special. Диалоговая панель автоматически проверит содержимое буфера папки обмена для установки соответствующих свойств OLE.
Совет: Контекстное меню контейнерного элемента управления OLE содержит много полезных пунктов, поэтому следует отнестись к нему с вниманием.
Свойства OLE
Как наверное, читателю уже ясно, диалоговая панель дает простой путь для установки свойств управляющего элемента OLE. Можно их изменять также при помощи окна Properties или через код. (Это обязательно должно делаться через код, если работа с элементами OLE идет во время выполнения приложения).
Свойство SizeMode позволяет устанавливать, как будет выглядеть элемент управления во время выполнения программы. Если надо растянуть изображение по размерам управляющего элемента OLE, следует установить значение этого свойства в I (vbOLESizeStretch). И, наконец, можно указать элементу, чтобы он автоматически изменял свои размеры, установив значение свойства в 2 (vbOLESizeAutoSize).
Появляющаяся диалоговая панель также позволяет устанавливать определяющее свойство Class, которое указывает на приложение, содержащее данные. Свойство OLETypeAction определяет тип объекта, который будет создаваться, т.е. будет ли он связанным, встроенным или и тем и другим одновременно. Свойство SourceDoc содержит имя связанного объекта или файла, использующегося в качестве шаблона для встроенного объекта. Свойство Sourceltem используется только для связанных объектов и указывает ту часть связанного документа приложения Visual Basic, которое будет с ним работать. (Например, любая часть электронной таблицы может быть задана путем установки этого свойства в значение типа "R1C1 :R1C10".)
Общие методы OLE-êîíòåéíåðà
И, наконец, существует ряд важных методов, которые могут быть применены с контейнерными элементами управления OLE и которые позволяют точно указать действия, которые необходимо произвести с OLE-îáúåêòîì. Требуется ли обновить объект, создать или удалить его, сохранить информацию объекта в файле, считать ее из файла и многое другое. Далее мы вкратце расскажем о наиболее общих методах работы с OLE-îáúåêòàìè.
CreateEmbed. Этот метод создает встроенный OLE-îáúåêò. Чтобы сделать это, сперва необходимо установить (через диалоговую панель OLE или посредством кода) оба свойства Class и OleTypeAllowed. Напомним, что свойство OleTypeAllowed равно 0 для связывания, равно 1 для встраивания и 2 - для того и другого. Свойство Class устанавливает тип OLE-îáúåêòà. (Имя класса доступно из диалоговой панели OLE или через окно Properties. Можно использовать свойство OLEType для определения типа связи во время выполнения приложения.) При создании нового встроенного OLE-îáúåêòà необходимо, чтобы приложение, в котором он будет создаваться, было активным (для этого можно использовать инструкцию AppActivate) или путь к нему должен быть известен системе.
CreateLink. Создает связанный OLE-îáúåêò из существующего файла. Для этого сперва надо установить свойства OleTypeAllowed и SourceDoc. В этом случае OleType Allowed может быть равным 0 (связанный объект) или 2 (связанный и встроенный объект).
Свойство SourceDoc содержит имя файла для связанного объекта. Если надо работать только с частью связанного объекта, следует установить соответствующим образом свойство Sourceltem.
Точно так же, как и в случае со встраиванием документа, приложение должно быть активным или же его путь должен быть известен системе.
Copy. Этот метод пересылает все данные и свойства связанного объекта в буфер папки обмена Windows. Как связанная, так и встроенная информация может быть скопирована в буфер папки обмена.
Paste. Копирует данные из буфера папки обмена в элемент управления OLE. Не надо забывать установить свойство PasteOK элемента управления.
Update. Это очень важный метод, так как именно он передает данные из приложения в элемент управления OLE.
Do Verb. Этот метод позволяет управлять OLE-îáúåêòîì. Для его использования необходимо передать параметр Verb, который указывает действие, которое надо произвести над объектом.
Примечание: Если установить значение свойства AutoActivate элемента управления в double-click (значение=2), то элемент управления OLE автоматически будет активизировать текущий объект после того, как пользователь дважды щелкнет по нему мышкой. Если приложение поддерживает "In Place Activation", то можно сделать так, что приложение будет активизироваться всякий раз, когда элемент управления OLE будет получать фокус (для этого надо установить значение AutoActivate в 1).
Close. Для OLE-îáúåêòîâ. Этот метод используется только для встроенных объектов, так как он закрывает OLE-îáúåêò и прекращает связь с приложением, которое отвечает за объект.
Delete. Этот метод следует использовать для удаления объекта. Объекты OLE автоматически удаляются при закрытии формы.
SaveToFile. Этот метод жизненно важен для встроенных объектов OLE. Так как данные управляющего элемента OLE принадлежат только самому OLE-îáúåêòó, то они могут быть потеряны, если не написать соответствующий код, использующий метод SaveToFile.
ReadFromFile. Этот метод считывает данные объекта из файла после того, как они были там сохранены методом SaveToFile. Код, необходимый для использования этого метода, похож на код, предназначенный для сохранения данных в файле при помощи метода SaveToFile.
InsertObjDlg. При вызове этого метода появляется диалоговая панель InsertObject, которую Visual Basic использует при помещении OLE-îáúåêòà на форму. Во время выполнения приложения можно использовать этот метод для обеспечения пользователю простого способа создания связанных и встроенных объектов.
PasteSpecialDlg. Этот метод вызывает на экран диалоговую панель Paste Special. Во время выполнения приложения эта диалоговая панель дает пользователю возможность вставлять объекты из буфера папки обмена Windows.
Fetch Verbs. Используется для получения списка действий, поддерживаемых приложением.
SaveToOLEIFile. Этот метод следует использовать для обеспечения обратной совместимости с предыдущими версиями OLE.
OLE Automation (управление другими приложениями при помощи OLE)
Visual Basic является расширяемым языком программирования, в этом заключается его основное достоинство. Однако не всем нравится необходимость создания собственных элементов управления или библиотек динамической компоновки DLL, которые дублируют возможности других приложений, таких, как Word или Excel. В таких случаях можно воспользоваться технологией OLE Automation, при помощи которой можно легко управлять другими приложениями. При помощи Visual Basic можно создать приложение, которое будет управлять данными и объектами других приложений.
Некоторые объекты, поддерживающие OLE Automation, также поддерживают связывание и встраивание. Если какой-либо объект из контейнерного управляющего элемента OLE поддерживает OLE Automation, можно получить доступ к его свойствам и методам при помощи свойства Object. При непосредственном создании объекта на форме или через код можно напрямую использовать его свойства и методы. Полное обсуждение возможностей OLE Automation выходит за рамки данной книги. Если после прочтения этой главы захочется узнать побольше об OLE Automation, можно обратиться к руководству, поставляемому с Visual Basic.
Использование OLE Automation
Как уже было показано раньше, можно создать ссылку на объект в коде программы при помощи ключевого слова New, CreateObject или GetObject без обращения к OLE-ñåðâåðó, создавшему объект. Объекты таких приложений, как Microsoft Word и Microsoft Excel, могут использоваться в качестве примера типов объектов. Некоторые вспомогательные объекты, как, например, ячейка электронной таблицы Excel, могут быть доступными только через методы более высокоуровневых объектов.
Например, перейдем к пункту ProjectIProperties, затем выберем библиотеку объектов Excel для доступа к ним через Visual Basic. Теперь добавим к форме поле ввода. Теперь можно написать код OLE Automation, который будет заполнять ячейки из второго столбца электронной таблицы Excel последовательными значениями, после чего эти значения будут просуммированы, а результирующее значение будет помещено в поле ввода на форме Visual Basic:
Private Sub Form_Ciick()
Dim obj Excel As Object
Set obj Excel = CreateObject ("EXCEL .SHEET")
objExcel .Application .Visible = True
For I = I To 10
objExcel.Cellsd, 2).Value = I
Next I
objExcel. Cells (11, 2) .Formula = "=sum(BI.-BIG)"
Textl.Text=objExcel.Cells(ll, 2)
objExcel .Application.Quit
Set objExcel = Nothing
End Sub
И напоследок дадим несколько замечаний:
* OLE Automation требует определенного уровня знакомства с объектами приложения, с которым надо работать. При этом очень часто используется хитроумный синтаксис. (В этом деле Object Browser поможет сэкономить много времени.)
* На Pentium 90 с 16 мегабайтами ОЗУ представленный фрагмент программы выполняется примерно 0,6 секунды. А на Pentium 166 с 80 мегабайтами ОЗУ этот фрагмент выполняется практически мгновенно. Из этого легко сделать вывод, что для действительно быстрой работы OLE Automation необходим быстрый процессор и большой размер памяти на компьютере.
* В предыдущем пункте было показано, что хотя OLE Automation является действительно очень мощной технологией, она требует значительных ресурсов для быстрого выполнения. Поэтому следует очень четко все обдумать перед тем, как использовать OLE Automation в работе приложения.
* Для определения типа аппаратного обеспечения можно использовать вызовы функций Windows API. При этом большее внимание необходимо уделить объему установленной памяти, чем типу и тактовой частоте процессора. Не стоит и пытаться использовать OLE Automation, если на компьютере пользователя установлено 4 мегабайта памяти, и следует хорошенько подумать, прежде чем воспользоваться возможностями OLE Automation на машине с 8 мегабайтами. OLE Automation требует для нормальной работы, как минил1ум, 16 мегабайт, хотя предпочтительнее использовать эту технологию на машинах с 32 и более мегабайтами ОЗУ.
[AAnA1]
[AAnA2]
[AAnA3]
[AAnA4]
[AAnA5]
[AAnA6]
[AAnA7]
[AAnA8]
[AAnA9]
[AAnA10]
[AAnA11]
[AAnA12]
[AAnA13]
[AAnA14]
[AAnA15]
[AAnA16]
[AAnA17]
[AAnA18]
[AAnA19]
[AAnA20]
[AAnA21]
[AAnA22]
[AAnA23]
[AAnA24]
[AAnA25]
[AAnA26]
[AAnA27]
[AAnA28]
[AAnA29]
[AAnA30]
[AAnA31]
[AAnA32]
[AAnA33]
[AAnA34]
[AAnA35]
[AAnA36]
[AAnA37]
[AAnA38]
[AAnA39]
... метод доступа с передачей полномочия. Охарактеризовать метод множественного доступа с разделением частоты. Какие существуют варианты использования множественного доступа с разделением во времени? Лекция 5.ЛВС и компоненты ЛВС Компьютерная сеть состоит из трех основных аппаратных компонент и двух программных, которые должны работать согласованно. Для корректной работы устройств в сети их нужно ...
... университет П. Е. Матвеев ЭТИКА. Основы хозяйственной этики Владимир 2003 Министерство образования Российской Федерации Владимирский государственный университет П.Е. Матвеев ЭТИКА. Основы хозяйственной этики Курс лекций Ч а с т ь в т о р а я Владимир 2003 ББК 87.715.4 М 33 Рецензенты:Доктор философских наук, доктор юридических наук, профессор Владимирского юридического института ...
... . М., НОРМА,2003. 10. Теория государства и права. Учебник./ Под ред. В.М. Корельского, В.Д.Перевалова. М., НОРМА, 2001. 11. Теория государства и права. Курс лекций./ Под ред. М.Н.Марченко. М., Зерцало, 1998. 12.Правоведение. Учебник./ Под ред О.Е.Кутафина. М., Юристъ,2001. 13.Варывдин В.А. Право.Курс лекций. М.,1999. ДОПОЛНИТЕЛЬНАЯ ЛИТЕРАТУРА 14. Козлова Е.Н., ...
... платы. 4.Расширение общественных фондов потребления снижало заинтересованность личности в результатах своего труда. 1 В Полном собрании сочинений В.И.Ленина нет никаких высказываний, о которых говорит И.В.Сталин. В.Н. Гузаров и Н.И. Гузарова Курс лекций «История России: 1861-1995 гг. Томск - 1999Глава 1. Введение к курсу «Истории России» Территория современной России, огромной страны, ...
0 комментариев