Разработка интегрированных прикладных программ (Меньшикова К. Г.). Разработка интегрированных прикладных программ (Меньшикова К. Г.. Методическое пособие по курсу Проектирование программного обеспечения автоматизированных систем для студентов, обучающихся по направлению Прикладная математика и информатика
Скачать 313.5 Kb.
|
3.4.Работа с серверами из 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'); 4.Элементы управления ActiveX4.1.Создание ActiveX на основе компонентов VCLДля демонстрации создадим управляющий элемент на основе компонента TMonthCalendar:
Для регистрации используется команда Run | Register ActiveX Server, и будет получено сообщение: Successfully registred ActiveX Server, ‘D:\ActiveX\Delphi – ActiveX\ MC_Project.ocx’. В папке проекта можно видеть, что кроме самого элемента ActiveX (файл MC_Progect.ocx), создана его библиотека типов (файл MC_Project.tlb). 4.2.Тестирование ActiveXЛучшим средством для тестирования элементов управления являются инструментарии фирмы Microsoft, так как спецификация элементов управления создавалась, в первую очередь, в расчете на эти средства разработки. К тому же проверять работоспособность созданного элемента лучше в среде, отличной от среды его создания. Для созданного нами элемента можно использовать Visual Basic, Visual C++, а проще всего Visual Basic for Applications (Microsoft Word или Excel). Тестирование с использованием VBA
|