Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
14
Добавлен:
13.03.2016
Размер:
321.02 Кб
Скачать
    1. Контоллер на vba

Идеальным контроллером автоматизации является Excel. Конечно, можно использовать и любое другое офисное приложение, однако удобнее и быстрее всего осуществить проверку работоспособности сервера можно именно в Excel.

Для проверки сервера можно на рабочий лист рабочей книги поместить кнопки, как это показано на рис. 4, подготовить текст (жирный шрифт) и ввести дату в ячейку “F10”. Затем перейти в редактор Visual Basic и создать обработчики для кнопок.

Для организации позднего связывания можно просто объявить переменную – объект для связи с сервером: Dim Serv As Object

Остальной код будет выглядеть так:

  • создание объекта автоматизации

Set Serv = CreateObject("Project_DayWeek.DayWeek")

Рис. 4

  • прерывание связи Set Serv = Nothing

  • работа со свойством Visible

Serv.Visible = Range("C6").Value (установить) Range("C6").Value = Serv.Visible (получить)

  • для получения данных придется объявить специальные переменные: Dim str As String

Call Serv.Today(str) Range("G5").Value = str

  • для передачи значения можно использовать ячейки рабочего листа:

Dim i As Long Dim str As String Call Serv.Data_Day(Range("F10").Value, i, str) Range("H10").Value = i Range("G10").Value = str

Для использования библиотеки типов пользователь или автор рабочей книги, войдя в редактор Visual Basic, должен выбрать в меню команду Tools | References…, а в появившемся списке установить флажок на Project_DayWeek Library (список всех библиотек типов Excel считывает при загрузке из раздела реестра TypeLib). После этого пользователь может просматривать методы и свойства сервера, выбрав в меню команду View | Object Browser.

Если после этого объявить переменную Serv, как ссылку на соответствующий интерфейс (Dim Serv As IDayWeek), то программный код будет использовать библиотеку типов.

  1. Управление офисными приложениями

Практически все, что может сделать пользователь, работая с приложениями MS Office, доступно для автоматизации. Для управления сервером, конечно, необходимо знать, какие объекты, свойства и методы предоставлены разработчиками сервера для автоматизации. Эти сведения содержатся обычно в документации, в справочной системе или в литературе.

Необходимую информацию можно получить также из библиотеки типов сервера. В Delphi или C++ Builder для этого можно воспользоваться командой импорта библиотеки типов сервера, например, для Excel 2000 в списке библиотек можно увидеть строку: Microsoft Excel 9.0 Object Library. После ее выбора будут созданы файлы с описанием имеющихся объектов (для С++Builder файлы Excel_TLB.cpp и Excel_TLB.h, а для Delphi файл Excel_TLB.pas). Файлы размещаются в (системной) папке, например, C:\ ProgramFiles\ Borland\ Delphi6\ Imports.

Для управления серверами удобнее всего воспользоваться компонентами визуальной библиотеки. Однако для этого требуется предварительное знакомство с офисными объектами и проведение программных экспериментов.

    1. Ms Excel и компоненты библиотеки vcl

С++Builder и Delphi поддерживают работу со многими распространенными приложениями, предлагая программистам соответствующие компоненты. Офисные компоненты чаще всего располагаются на странице Servers (хотя возможно, что в названии используется номер офисной версии). В любом случае при разработке сложных приложений надо решить вопрос совместимости версий Windows, Microsoft Office и инструментариев разработки, иначе переносимость таких приложений может быть очень ограничена.

Компонент ExcelApplication задает приложение Excel, его свойства, методы и события характеризуют приложение в целом. Его свойство Workbooks определяет коллекцию рабочих книг (все открытые в приложении рабочие книги).

Компонент ExcelWorkbook задает рабочую книгу и, в свою очередь, имеет свойство Worksheets – все рабочие листы книги. Компонент Worksheet – это конкретный лист рабочей книги.

Установить связь с физическим объектом можно так:

ExcelApplication1->Connect(); ExcelWorkbook1-> ConnectTo (ExcelApplication1 -> ActiveWorkbook); ExcelWorksheet1 -> ConnectTo (ExcelWorkbook1-> ActiveSheet); ExcelWorksheet2 -> ConnectTo (ExcelWorksheet1 -> get_Next());

Для вызова некоторых методов и свойств используется специальная константа - LOCALE_SYSTEM_DEFAULT (lcid); ее значение равно 0. Например, можно сделать окно Excel видимым (или невидимым, если параметр равен false):

#define lcid LOCALE_SYSTEM_DEFAULT ExcelApplication1->set_Visible(lcid,true);

При работе с коллекцией Workbooks можно обращаться к ее свойствам, например, узнать количество открытых книг

int n= ExcelApplication1-> Workbooks-> Count;

и методам, например, открыть и добавить новую книгу

WideString filename="d:/work.xls"; ExcelApplication1->Workbooks->Open(filename); ExcelApplication1->Workbooks -> Add();

Сохранить рабочую книгу или сделать рабочий лист активным можно с помощью соответствующих компонент:

ExcelWorkbook1->Save(lcid); ExcelWorksheet2 ->Activate (lcid);

При работе с офисными компонентами используется раннее связывание. Компилятор, конечно, четко отслеживает типы передаваемых параметров. Однако иногда необходимо или удобно его “обмануть”, упаковав данные в формат TVariant. Например, зададим имена листов:

WideString str; str="MyList 1"; ExcelWorksheet1->set_Name(str); ExcelWorksheet2->set_Name((TVariant)"MyList 2");