Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Горев “Эффективная работа с СУБД”.pdf
Скачиваний:
208
Добавлен:
28.06.2014
Размер:
4.71 Mб
Скачать

converted to PDF by HupBaH9I

макрос или процедуру, которые будут выполнять эти действия.

В качестве примера создадим следующую очень простую процедуру:

Sub Прием заказа_открыть()

DoCmd.OpenForm "Прием заказа"

End Sub

Вначале мы должны создать линейку меню, которая должна иметь по крайней мере один элемент. Пункты линейки меню отличаются от команд меню и подменю тем, что у них нет отступа в нижней части окна Конструктора меню.

На рис. 9.21 "форма" - это пункт линейки меню, а "прием заказа" - это команда меню, которая выполняет макрокоманду "запустить программу", имеющую в качестве аргумента имя нашей процедуры "Прием заказа_открыть".

Для того чтобы добавить или удалить отступ у элементов будущего меню, используйте кнопки со стрелками, которые находятся выше области отображения пунктов линейки, расположенной в нижней половине окна Конструктора меню.

Положение элемента в нижней половине окна диалога и наличие отступа определяют, будет ли он пунктом линейки меню, командой меню или подменю, а также месторасположение этого элемента в получившемся меню.

Названия команд меню должны следовать за названиями пунктов меню, к которым они относятся, аналогично названия команд подменю должны следовать вслед за командой меню, которая будет их выводить. Если вы хотите просто вывести разделитель в каком-либо из меню, то сделайте заголовком элемента дефис.

Сохранив Построитель меню, вы получите новые макросы, число которых будет равняться числу элементов меню за вычетом тех элементов, заголовками которых является дефис.

Глава 10

Использование готовых компонентов в приложении

10.1.Основные преимущества модульного проектирования прикладных программ

10.2.Как правильно использовать OLE 2.0

Возможности OLE 2.0 Использование OLE Automation Управление объектами Excel

Управление объектами Word for Windows

10.3. Использование OLE Automation для передачи данных Построение графиков с помощью MS Graph 5.0 Построение графиков с помощью MS Excel 7.0 Построение отчета в Word for Windows

Запись информации в Schedule+ 10.4. Применяем ActiveX

Иерархический список Календарь

Наверное, вы не раз с завистью смотрели на мощные графические средства популярных

электронных таблиц или изощренные возможности редактирования текста в текстовом процессоре. Вы наверняка сможете написать такую же программу, - но стоит ли повторять уже сделанное? Гораздо привлекательнее научиться использовать готовые функциональные блоки в пользовательском приложении.

10.1. Основные преимущества модульного проектирования прикладных программ

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

которое позволит организации максимально быстро повысить эффективность и производительность ее работы.

converted to PDF by HupBaH9I

В этом параграфе мы расскажем о том, какие возможности дает среда Windows для решения

поставленной в предыдущем абзаце цели и постараемся убедить вас в эффективности модульного проектирования пользовательского приложения.

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

Например, прикладная программа, которая ищет с помощью системы управления базой данных сведения о потенциальных клиентах, может использовать возможности текстового процессора Microsoft Word for Windows для подготовки рекламных писем. Это решение позволяет использовать существующие функциональные возможности прикладных программ Microsoft Office, освобождая вас от необходимости разрабатывать всю прикладную программу.

Помимо несомненного выигрыша по времени, использование существующих прикладных программ в формировании заказных решений стимулируют следующие тенденции:

Быстрое повышение мощности и снижение стоимости персональных компьютеров.

Поистине революционные масштабы объединения вычислительных и информационных возможностей в рамках локальных и глобальных компьютерных сетей.

Высокие требования пользователей к качеству пользовательского интерфейса. Для

персонального компьютера графический пользовательский интерфейс стал в настоящее время стандартом де-факто.

Далее в этом и последующих параграфах данной главы мы рассмотрим наиболее важные аспекты, связанные с использованием функциональных возможностей Microsoft Office в прикладной программе для автоматизации обработки данных. Но сначала мы остановимся на тех средствах, которые составляют основу использования стандартного прикладного программного обеспечения в разрабатываемых пользовательских приложениях.

Стандартные прикладные программы Microsoft Office могут быть источником большого числа программных модулей (объектов) и составной частью инструментальных средств разработки благодаря функциональным возможностям стандарта OLE 2.0 и языка программирования

Microsoft Visual Basic for Application. Это означает, что прикладные программы Microsoft Office

содержат компоненты, которые вы можете использовать при разработке пользовательского приложения. Вы и пользователи ваших программ получаете тем самым следующие существенные преимущества:

Более эффективно используется стандартное программное обеспечение, которое, как правило, уже применяется пользователями.

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

Использование стандарта OLE 2.0 является основой для разработки компонентного программного обеспечения, потому что этот стандарт обеспечивает средства для определения объектов и их совместного использования различными программами. Например, табличный процессор Microsoft Excel - одна из первых прикладных программ, которая предоставляет богатый набор объектов OLE. Библиотека объектных модулей OLE Microsoft Excel включает свыше 120 объектов и около 2700 связанных с ними методов и свойств. Эти объекты доступны через любую прикладную программу или язык, который поддерживает стандарт OLE 2.0, и их использование позволяет воспользоваться всеми функциональными возможностями Microsoft Excel без необходимости обеспечения этой функциональности в своей прикладной программе.

10.2. Как правильно использовать OLE 2.0

Стандарт OLE - Object Linked and Embedding (связывание и внедрение объектов) собственно своим названием определяет, что речь в нем идет о компоновке объектов и правилах их совместного использования для достижения интеграции среди прикладных программ.

converted to PDF by HupBaH9I

Представляя изображения, диаграммы, таблицы, фрагменты речи, документы и другие функциональные единицы программы как объекты, пользователи могут с большей легкостью объединять и обрабатывать данные из разных прикладных программ.

Вэтом параграфе мы изучим:

основные преимущества использования технологии OLE;

методику создания и использования OLE-объектов;

принципы работы OLE Automation.

Какие преимущества дает пользователю и разработчику эта технология? Вот основные из них:

Редактирование на месте позволяет работать с документом другого приложения Windows, не покидая пользовательского приложения. Необходимые элементы управления, включая меню, появятся на месте текущих, а после завершения работы вернутся на свое место элементы управления и меню пользовательского приложения. Это позволяет избежать необходимости ручной загрузки и перехода в другое приложение.

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

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

связывание позволяет не увеличивать без необходимости объем документа и использовать наиболее свежую версию данных, хранящуюся в отдельном файле. Встраивание обеспечивает хранение всех необходимых данных в одном приложении.

Поддержка вложенных объектов позволяет в одном документе держать несколько зависимых объектов без необходимости обращения к нескольким приложениям. Например, встроенная в форму электронная таблица Excel может содержать встроенную в таблицу диаграмму. Изменения в электронной таблице повлекут изменения в диаграмме.

OLE Automation позволяет в приложении программным путем устанавливать свойства и задавать команды для объектов другого приложения. Это дает большие возможности для управления процессом подготовки текстовых документов высокого качества, формирования графиков или выполнения расчетов.

Возможности OLE 2.0

Стандарт OLE 2.0 описывает правила интеграции прикладных программ.

Он фактически расширяет пользовательский интерфейс, делая его более интуитивно понятным. Стандарт OLE 2.0 не ставит пользователя перед необходимостью набора команд или выбора опций, предоставляя возможность выполнять работу более естественным способом, управляя объектами в интерактивном режиме на экране компьютера. Пользователь, вместо того чтобы изучать методы работы с прикладный программой или операционной системой, может сосредоточиться на более эффективной работе с данными и документами.

Технология OLE 2.0 особенно полезна потому, что устанавливает стандартный метод

взаимодействия между прикладными программами при использовании различных объектов (документов, подготовленных разными прикладными программами). Она предлагает мощные средства для создания документов, получающих данные из разнообразных источников информации. Такие документы называются составными документами. Объекты, которые они содержат, могут включать почти любой тип информации, в том числе текст, растровые изображения, иллюстрации и фрагменты речи.

В технологии OLE 2.0 выделяются два главных типа данных, связанных с объектом: данные представления и локальные данные.

Данные представления объекта - это информация, нужная для представления объекта на экране компьютера, в то время как локальные данные объекта - это вся информация, необходимая для прикладной программы, чтобы редактировать объект.

Используя OLE 2.0 пользователь может также связывать или включать объект в документ.

converted to PDF by HupBaH9I

Связывание - это процесс, при котором в документ будут помещены только данные представления объекта и ссылка (или указатель на местонахождение) на локальные данные.

Локальные данные, связанные с объектом, существуют в некотором другом файле на диске. Всякий раз, когда объект модифицируется прикладной программой, этот файл открывается и прикладная программа использует хранящиеся в нем локальные данные. Пользователь работает со связанным объектом так, как будто он полностью содержится внутри документа.

Включение объекта физически помещает данные представления объекта и локальные данные внутри документа.

Вся информация, необходимая для редактирования объекта, содержится в документе. Любой объект, который содержит другие объекты (как связанные, так и вложенные), называется контейнером. Контейнерами чаще всего являются составные документы.

Включение объектов хотя и увеличивает объем документа, но позволяет перемещать объект

наряду с документом на другой компьютер и тем самым редактировать такие объекты на различных рабочих местах. Связанные объекты не могут "путешествовать" с документами за пределы локальной файловой системы компьютера, но они более эффективны, чем вложенные объекты, потому что один образец локальных данных объекта может служить источником для большого числа различных документов.

Использование OLE Automation

Один из важнейших элементов стандарта OLE 2.0 - OLE Automation - определяет способ управления командами прикладной программы из другой прикладной программы.

Прикладные программы, поддерживающие OLE Automation, имеют соответствующие объекты, которые так и называются - объекты OLE Automation, посредством которых вы можете управлять работой всех остальных объектов прикладной программы, используя возможности Visual Basic for Application.

OLE Automation для управления объектами использует OLE-серверы.

OLE-сервер - это программа, которая может предоставить другим программам возможность использовать свои объекты.

Программы, которые могут управлять объектами OLE-серверов, называются OLE-клиенты или

OLE-контроллеры.

Например, в версии 3.0 Visual FoxPro может выполнять функции только OLE-контроллера. Мы можем управлять объектами OLE-сервера, но не можем предоставить в чье-либо управление объекты Visual FoxPro.

Большинство OLE-серверов являются так называемыми серверами Out-of-Process. Они являются исполняемыми программами и могут взаимодействовать как с 16-bit, так и с 32-bit OLE- контроллерами. Расплатой за это является невысокая скорость обмена данными и значительные потребляемые ресурсы памяти. Другой тип OLE-сервера называется In-Process и представляет собой DLL-библиотеку, которая динамически подгружается и выгружается по необходимости. Хорошим примером такого сервера является процессор баз данных СУБД Access 7.0. Обмен данными с этим типом OLE-сервера происходит значительно быстрее, но работать он может только с OLE-контроллером такой же разрядности.

В табл. 10.1 приводится важная для разработчика информация о некоторых OLE-серверах

Microsoft.

Таблица 10.1. OLE-серверы Microsoft

OLE-сервер

Где найти информацию

 

об объектах

converted to PDF by HupBaH9I

Серверы Out-of-Process

Microsoft Schedule+ 7.0

-

Microsoft Graph 5.0

VBA_GRP.HLP

Microsoft Word 7.0

WRDBASIC.HLP

Microsoft Excel 7.0

VBA_XL.HLP

Cерверы In-Process

Data Access Object

DAO.HLP, DAOSDK.HLP

SQL Distributed

SQLBOOKS.MVB

Management Objects

 

Вкачестве примера приведем несколько OLE-объектов для Microsoft Excel:

Application - запускает программу Microsoft Excel;

Workbook - рабочая книга, которая включает отдельные листы - один файл формата

Microsoft Excel;

Chart - график в рабочей книге;

Worksheet - рабочий лист в книге;

Range - одна ячейка или диапазон ячеек на листе.

Втаких больших приложениях, как Microsoft Excel, мы сталкиваемся с очень большим количеством объектов. Причем каждый объект занимает свое строго определенное положение в

иерархии объектов. Поэтому, обращаясь к объекту, мы должны, соответственно, перемещаться по этой иерархической структуре. Наверху иерархии находится объект Application. Какие-либо события или действия, связанные с этим объектом, будут иметь отношение в целом к прикладной программе. Например, для того чтобы закрыть приложение, мы должны написать такую команду:

Application.Quit

Объект Application включает в себя большое количество других объектов. Например, вы можете использовать следующую команду для ссылки на текущую рабочую книгу, открытую в

Microsoft Excel:

Application.Workbooks

Заметьте, что название объекта Workbooks приводится во множественном числе, потому что это ссылка на коллекцию объектов, в данном случае рабочих книг.

Объект коллекции - это набор объектов, имеющих общие свойства, события и методы, что позволяет сослаться на них как на единый объект.

Объекты коллекции позволяют значительно проще выполнять многие распространенные действия с прикладной программой. Например, для выполнения действий с каждым объектом в коллекции можно использовать оператор цикла:

*Организуем ссылку на запущенное приложение oExlApp = GETOBJECT(,"Excel.Application")

nWrk = 1

*Определяем, сколько открыто рабочих книг nCount = oExlApp.Application.WorkBooks.Count FOR nWrk = 1 TO nCount

*Выведем наименование каждой рабочей книги

? oExlApp.Application.WorkBooks.Item(nWrk).FullName

NEXT

* Закроем приложение oExlApp.Application.Quit

Чтобы запустить этот пример, загрузите Excel, откройте несколько файлов. В Visual FoxPro наберите приведенный в примере код в программном файле. В окне Command сделать это нельзя

converted to PDF by HupBaH9I

из-за команды FOR, которая не поддерживается в интерактивном режиме командного окна. Вам также может показаться, что в этом фрагменте лишней является переменная nCount. Это не так! При использовании OLE Automation не встраивайте ее код внутрь команд Visual FoxPro. Запустите программный файл.

Как вы могли заметить из приведенного примера, для ссылки на одну рабочую книгу в коллекции мы применяли метод Item, в котором используется номер элемента коллекции. Для ссылки на первую рабочую книгу в коллекции укажите:

Application.Workbooks.Item(1)

Для того чтобы закрыть первую книгу в коллекции:

Application.Workbooks.Item(1).Close

В свою очередь каждая рабочая книга содержит коллекцию рабочих листов, каждый рабочий лист - коллекцию ячеек и т. д. В программе сослаться на ячейку A1 можно таким образом:

Application.Workbooks.Item(1).Worksheets.Item("Sheet1").Cells.Item(1,1)

Как видно из приведенных примеров, мы должны разбираться в коллекциях для того, чтобы иметь возможность спускаться "вниз" по иерархии объектов. На рис. 10.1 приведена схема такого перемещения между объектами Microsoft Excel.

Рис. 10.1. Перемещение вниз по иерархии объектов с помощью коллекций в Microsoft Excel

Принцип перемещения вверх по иерархии более привычен для программиста, освоившего объектно-ориентированное программирование. Для этого используется свойство Parent и пока отсутствующее в Visual FoxPro, но привычное для приложений Microsoft Office свойство Application. Соответствующая схема для использования этих свойств приведена на рис. 10.2.

converted to PDF by HupBaH9I

Рис. 10.2.

При использовании OLE Automation очень важным понятием является понятие объектов верхнего уровня.

В каждом приложении объекты верхнего уровня позволяют ссылаться на них из другой программы.

Имеющиеся, например, в Microsoft Excel объекты верхнего уровня представлены на рис. 10.3.

Рис. 10.3.

Несколько ранее вы, наверное, уже обратили внимание, что ссылка на вновь создаваемый объект OLE Automation в программе Visual FoxPro выполняется так же, как при не визуальном программировании на новый объект самого Visual FoxPro - с помощью функции

CREATEOBJECT(ClassName [, eParameter1, eParameter2, ...])

Если OLE-объект уже существует, получить на него ссылку можно с помощью функции

Соседние файлы в предмете Программирование на Delphi