Анимация
JavaScript
|
Главная Библионтека Afjpliualiun Workbooks Wine OWE Ч Chart Apt:iliu3licin чоршймот c&Ksirr приложения Wcrkboo-f l Charts Panes Рис. 10.2. Chart РапеРэгегс зозззэнет При использовании OLE Automation очень важным понятием является понятие объектов верхнего уровня. В каждом приложении объекты верхнего уровня позволяют ссылаться на них из другой программы. Имеющиеся, например, в Microsoft Excel объекты верхнего уровня представлены на рис. 10.3. Обеспечивает доступ ко всем о&ъенп"ам и фуМКЦИНГу! приложи! 1ИЯ Включает ье объекты и данные, - ссдсрокащиося в одном файле Application Workbook Chart Sheet Add-in Включает графические объдкты - для предота&ления данньу Включает и сбеспечиБает выполнение расчетов с данными в таблице Обеспечивает достт-п к дополнительным федствам прилол«ния Рис. 10.3. Несколько ранее вы, наверное, уже обратили внимание, что ссылка на вновь создаваемый объект OLE Automation в программе Visual FoxPro выполняется так же, как при не визуальном программировании на новый объект самого Visual FoxPro - с помощью функции CREATEOBJECT(ClassName [, eParameter1, eParameter2, ...]) Если OLE-объект уже существует, получить на него ссылку можно с помощью функции GETOBJECT([FileName ][, ClassName]) Параметр FileName позволяет указать имя существующего файла (и при необходимости путь к нему), содержащего OLE-объект, который необходимо активизировать. С помощью параметра ClassName можно указать имя объекта верхнего уровня (класс OLE-объекта). Это необходимо в том случае, если, как мы это показали на примере Microsoft Excel, в приложении в одном файле может храниться несколько объектов верхнего уровня, например таблицы, графики и т. д. В данном случае для параметра должен использоваться следующий синтаксис: <<"Имя приложения">>.<<"Имя объекта верхнего уровня">> Например: oSht = GETOBJECT("C:\VFP\SAMPLE\VAT.XLS","EXCEL.SHEET") В Visual Basic и соответственно Access мы можем использовать аналогичные функции, но для обеспечения ссылки на объект необходимо применять оператор Set, как показано в следующих примерах: В первом примере создаем объект MS Excel Dim oExlApp As Object Объявляем переменную для ссылки на объект Set oExlApp = CreateObject("Excel.Application") Создаем объект oExlApp.Visible = True Выводим объект на экран oExlApp.Quit После окончания работы закрываем Excel Set oExlApp = Nothing Стираем ссылку на объект из памяти Во втором примере ссылаемся на объект MS Excel Dim oExlApp As Object Set oExlApp = GetObject("C:\VFP\SAMPLE\VAT.XLS","Excel.Sheet") Set oExlApp = Nothing Управление объектами Excel Для того чтобы остановиться на проблемах взаимодействия пользовательского приложения с объектами Excel, нам придется более подробно обсудить специфические в данном случае особенности работы функций CREATEOBJECT() и GETOBJECT(). Поэтому систематизируем необходимые данные для важнейших объектов верхнего уровня Microsoft Excel и приведем их в табл. 10.2. Таблица 10.2. Поведение объектов верхнего уровня Microsoft Excel Объект Функция Описание поведения Application CreateObject Всегда запускает невидимую копию Microsoft Excel. Файл рабочей книги не загружается. GetObject Если параметр FileName представляет собой пустую строку, запускается новая невидимая копия Microsoft Excel без загрузки файла рабочей книги. Если параметр пропущен, то предпринимается попытка получить ссылку на уже запущенную копию Microsoft Excel и в случае неудачи генерируется ошибка. Не указывайте в параметре FileName имя файла. Для этого случая используйте объекты Sheet или Chart. Sheet или CreateObject Если не существует Chart запущенной копии Microsoft Excel, то запускается невидимая копия и создается рабочая книга с именем "Object" и один рабочий лист с именем "Sheet1". Для объекта Chart помимо этого создается еще один рабочий лист с именем "Chart1". Как только ссылка на созданный объект перестает существовать (стирается), рабочая книга удаляется, но Excel остается загруженным в памяти компьютера. Если одна или несколько копий Microsoft Excel уже запущены, то добавляется рабочая книга с параметрами, как это было описано в предыдущем абзаце. В случае, когда уже работает несколько копий Excel, предугадать, в какой из них будет добавлена таблица, невозможно. GetObject Если параметр FileName является допустимым (существующим) именем файла и Microsoft Excel не запущен, то запускается новая невидимая его копия с невидимой рабочей книгой. Если хотя бы одна копия Microsoft Excel уже запущена, рабочая книга открывается в ней. При этом будет получена ошибка, если указанное в функции имя файла совпадет с уже открытым файлом в загруженной копии Excel. Если параметр FileName задан в виде пустой строки ("") и если не существует запущенной копии Microsoft Excel, то запускается невидимая ее копия и создается рабочая книга с именем "Object" и один рабочий лист с именем "Sheet1". Если параметр FileName задан в виде пустой строки ("") и если хотя бы одна копия Microsoft Excel загружена в память, то в одной из них открывается рабочая книга, как это было описано выше. Если параметр FileName не указан, всегда генерируется ошибка. Как вы можете заметить, изучив табл. 10.2, создание объектов OLE Automation или обращение к ним в Microsoft Excel зачастую может привести к совершенно различным последствиям. Почти 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 [ 114 ] 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |