- •Разработка интегрированных прикладных программ
- •Введение
- •Интерфейсы в Delphi
- •Присоединение интерфейсов к формам
- •Объекты com
- •Контроллер позднего связывания (Delphi)
- •Контроллер на основе библиотеки типов (Delphi)
- •Контоллер на vba
- •Управление офисными приложениями
- •Ms Excel и компоненты библиотеки vcl
- •Работа с ячейками таблицы
- •Серверы ms Office и позднее связывание
- •Работа с серверами из Delphi (позднее связывание)
- •Элементы управления ActiveX
- •Создание ActiveX на основе компонентов vcl
- •Тестирование ActiveX
- •Тестирование с использованием vba
- •Создание активных форм
- •Добавление свойств и методов
- •Динамическое создание элементов управления ActiveX
- •Компонент oleContainer
- •Создание и сохранение нового объекта (внедрение)
- •Создание связанного объекта
- •Работа с сервером
- •Библиографический список
- •Оглавление
Работа с серверами из Delphi (позднее связывание)
При создании контроллеров позднего связывания на Delphi следует обратить особое внимание на различия в синтаксисе обращений к членам коллекций объектов Excel и Word: в случае MS Word используется метод Item, в Excel члены коллекции рассматриваются как элементы массивов. В предыдущем параграфе было показано, что в С++Builder различие офисных серверов сказалось на использовании различных функций.
При работе с MS Excel доступ к объектам можно организовать так:
AppE:=CreateOleObject('Excel.Application'); WorkBs:=AppE.Workbooks; WorkSh:=AppE.Workbooks[1].WorkSheets[2]; WorkSh:=AppE.ActiveWorkBook.WorkSheets[2];
Методы серверных объектов можно вызывать обычным образом:
WorkBs.Add; AppE.Quit; AppE.Workbooks[2].Activate; AppE.WorkBooks[2].Close; AppE.ActiveWorkBook.Close(True,'D:\Work1.xls');
Последний пример хорошо иллюстрирует еще одно преимущество позднего связывания. Метод Close на самом деле имеет несколько параметров, но поскольку компилятор в данном случае не проверяет правильность обращений контроллера, то можно закрыть рабочую книгу, используя параметры по умолчанию.
Задание свойств объектов не отличается от случая обычных компонентов AppE.Visible:=true; Worksh.Name:='Результаты';
К ячейкам таблицы можно обращаться как к элементам двумерного массива, а группу ячеек задает свойство Range:
Worksh.Cells[1,2].Value:=25; Worksh.Cells[1,2].Font.Name:='Arial'; AppE.WorkBooks[1].WorkSheets[3].Range['B2:C4'].Value:='5';
В случае контроллера MS Word доступ к объектам выглядит несколько иначе:
WordDs:=AppW.Documents; WordD:=WordDs.Item(1); WordPar:=WordD.Paragraphs.Item(3);
Перед вызовом методов объекта коллекции также приходится предварительно обращаться к методу Item:
AppW.Documents.Item(2).Activate;
Работа с текстом может осуществляться так:
// вставка текста после указанного абзаца Rng:= AppW.ActiveDocument.Paragraphs.Item(1).Range; Rng.InsertAfter(‘Новый текст’); Rng.Copy; // копирование фрагмента текста AppW.Documents.Item(1).Paragraphs.Item(2).Range.Paste; // вставка текста после символов: WordD.Range(6,8).InsertAfter('Текст 2');
Элементы управления ActiveX
Создание ActiveX на основе компонентов vcl
Для демонстрации создадим управляющий элемент на основе компонента TMonthCalendar:
открыть окно галереи объектов и создать пустую библиотеку, выбрав значок ActiveX Library на странице ActiveX. Сохранить проект (например, MC_Project.dpr);
добавить в созданную библиотеку элемент управления, выбрав значок ActiveX Control и заполнить поля диалогового окна ActiveX Control Wizard: VCL Class Name (выбрать TMonthCalendar), New ActiveX Name (предложено MonthCalendarX), Implementation Unit;
сохранить, скомпилировать проект и зарегистрировать ActiveX в реестре.
Для регистрации используется команда Run | Register ActiveX Server, и будет получено сообщение: Successfully registred ActiveX Server, ‘D:\ActiveX\Delphi – ActiveX\ MC_Project.ocx’. В папке проекта можно видеть, что кроме самого элемента ActiveX (файл MC_Progect.ocx), создана его библиотека типов (файл MC_Project.tlb).
Тестирование ActiveX
Лучшим средством для тестирования элементов управления являются инструментарии фирмы Microsoft, так как спецификация элементов управления создавалась, в первую очередь, в расчете на эти средства разработки. К тому же проверять работоспособность созданного элемента лучше в среде, отличной от среды его создания. Для созданного нами элемента можно использовать Visual Basic, Visual C++, а проще всего Visual Basic for Applications (Microsoft Word или Excel).