Курс лекций по V B 5.0

Примечание: Если установить значение свойства 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]


Страница: