Смекни!
smekni.com

МИНИСТЕРСТВО ОБЩЕГО И ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ

ВОЛГОГРАДСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

Кафедра «САПР и ПК»

Семестровая работа

тема:

«Visual FoxPro 5.0 как OLE-cервер»

Выполнил: студенты группы АС-563

Маштак О.Н.

Проверил:

Волгоград 1999г.


Содержание:

1. Visual FoxPro как OLE-сервер.................................................. 2

2. Создание OLE-сервера в Visual FoxPro................................ 7

3. OLE-сервер в компьютерной сети......................................... 11

4. Automation Manager.................................................................... 14

5. Remote Automation Connection Manager............................... 15

Visual FoxPro как OLE-сервер

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

Эта новая возможность существенно расширяет возможности использования Vis­ual FoxPro, поэтому остановимся чуть подробнее на том, что же такое OLE-сервер.

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

В Visual FoxPro доступ к объектам выполняется, как и в подавляющем большин­стве других OLE-серверов, с помощью объекта верхнего уровня Application. В табл. 1 перечислены его свойства, а в табл. 2 — методы.

Свойства Объекта Application

Таблица 1.

Свойство Параметры и описание
ActiveForm.Property [ = Setting] ActiveForm.Method Property - свойство формы. Setting - значение свойства. Method - метод формы. Обеспечивает ссылку на активную форму или объект SCREEN
AutoYield [ = IExpr ] IExpr по умолчанию равен .Т., что предусматривает приоритет событий Windows. Значение .F. предотвращает прерывание выполнения кода Visual FoxPro. При этом события Windows ставятся в очередь. Определяет способ обработки событий Windows.
Caption [ = cText ] cText - текст заголовка. Определяет заголовок окна приложения.
DefaultFilePath [ = сPath ] сPath - обозначение устройству каталога или путь. Определяет каталог по умолчанию для приложения. Определяет путь и имя файла для запуска копии Visual FoxPro.
Height [ = nHeight ] nHeight - высота окна приложения. Определяет высоту окна приложения.
Let [ = nDist ] nDist - расстояние от левого края. Определяет расположение окна приложения относительно левого края.
Name [ = cName] cName - имя объекта. Задает имя объекта для ссылки в коде программы.
OLERequestPendingTimeOut [ = Nmilliseconds ] Nmilliseconds - величина задержки в миллисекундах, которая по умолчанию равна 5000 мс. Если параметр равен 0, то сообщение не появляется. Определяет задержку, которая происходит перед появлением сообщения о том, что система занята в процессе выполнения запроса OLE Automation, если пользователь использует клавиатуру или мышь.
OLEServerRaiseError [ = lExpression ] lExpression по умолчанию равен .F. - сообщение об ошибке будет появляться. Если параметр равен ., сообщения будет. Определяет появление сообщения об ошибке, когда истекает время, установленное в свойстве OLEServerBusyTimeout.
OLEServerBusyTimeout [ = Nmilliseconds ] nMilliseconds - величина задержки в миллисекундах до по­явления сообщения о том, что сервер занят. Определяет время, в течение которого происходит повторное выполнение запроса OLE Automation, если сервер занят.
StartMode Возвращает число, идентифицирующее тип запускаемого приложения.
StatusBar [ = cMessageText ] cMessageText - строка сообщения. Определяет текст в статус - строке приложения.
Top [ = nDist ] nDist — расстояние от верхнего края. Определяет расположение окна приложения относительно верхнего края.
Version Возвращает в виде строки символов номер версии запускае­мого приложения.
Visible [ = lExpr ] lExpr по умолчанию равен .F., т. е. запускаемая копия при­ложения невидима. Если параметр lExpr равен .Т. - прило­жение становится видимым. Определяет, будет ли запускаемая копия приложения видима.
Width [ = nWidth ] nWidth — ширина окна приложения. Определяет ширину окна приложения.

Методы Объекта Application

Таблица 1.

Метод Параметры и описание
DataToClip ([ nWorkArea | cTableAlias ] [, nRecords ] [, nClipFormat]) nWorkArea, cTabieAlias — рабочая область или псевдоним источника данных. nRecords — число копируемых записей. uClipFormat по умолчанию равен 1, при этом данные полей разделяются пробелами. Если параметр равен 3, данные раз­деляются знаком табуляции. Копирует записи в буфер обмена в виде текста, в котором каждая запись занимает отдельную строку.
DoCmd (cCommand) cCommand - выражение, представляющее команду VFP. Позволяет выполнить команду Visual FoxPro из приложе­ния являющегося OLE-контроллером.
Eval (cExpression) cExpression - выражение, которое необходимо преобразовать. Преобразует выражения и возвращает его в Visual FoxPro.
Help ([cFileName] [, nContexId] [, cHelpTopic]) cFileName - имя и путь к файлу оперативной помощи. NContextID - идентификатор раздела. cHelpTopic - тема раздела. Открывает окно с контекстной справкой.
Quit() Закрывает запущенную копию приложения Visual FoxPro.
RequestData ([nWorkArea | cTableAlias] [, nRecords]) nWorkArea, cTableAlias - рабочая область или псевдоним источника данных. nRecords - число копируемых записей. Создает массив с данными из источника данных Visual FoxPro.

Для ссылки на объект Application можно использовать системную переменную _VFP.

Visual FoxPro 5.0 имеет следующие коллекции, которые ассоциируются с объек­том Application:

· Forms — формы;

· Objects — объекты;

· Controls — элементы управления;

· Pages — страницы;

· Buttons — кнопки;

· Columns — колонки.

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

oFrm = CREATEOBJECT( 'Form')

? oFrm.Application.Forms[1].Controls.Count

Если вы уже писали программы в Visual FoxPro 3.0, то приведенное выше утверж­дение может вызвать некоторое удивление. Перечисленные коллекций были пред­ставлены и в третьей версии, это действительно так. Но, так как Visual FoxPro 3.0 не мог выполнять функции OLE-сервера, то эти коллекции не отвечали общепринятым стандартам OLE. В первую очередь за счет того, что их свойства были доступны для изменения. Это удобно, если мы работаем с одним приложением. По-прежнему нам никто не мешает продолжать использовать эти возможности. Но, как только мы начинаем использовать приложение как OLE-сервер, т. е. обращаемся к нему из другого приложения, то должны использовать объекты Visual FoxPro как OLE-коллекции.

Например, ничто не мешает нам при создании формы в Visual FoxPro написать такой код:

Frm = CREATEOBJECT ('Form' )

? oFrm.ControlCount &&Число элементов управления в форме

Для OLE-сервера число элементов управления в форме следует определять так, как это было показано в предыдущем примере, с использованием свойства Count.

Создание OLE-сервера в Visual FoxPro

Используя Visual FoxPro 5.0, можно создать OLE-сервер, функциональность которого будет использована несколькими приложениями.

Для создания OLE-сервера используемые в нем классы должны быть описаны как OLE Public, т. е. доступные для OLE Automation. Для этого в команду DEFINE CLASS включена новая опция OLEPUBLIC. Если класс создается в Конструкторе классов, необходимо использовать соответствующий независимый переключа­ть в диалоговом окне Class Info. Отметка класса как OLE Public позволяет Project Manager при построении приложения создавать и регистрировать данный класс как ОLЕ-сервер к которому должен получить доступ OLE-контроллер.

В Visual FoxPro вы можете создать как In-Process сервер (DLL), так и Out-of-Process сервер (ЕХЕ). Оба типа сервера при работе используют библиотеку поддержки приложений Visual FoxPro (runtime), однако существенно отливаются в использовании памяти.

Сервер ЕХЕ запускается в собственном адресном пространстве, и в этом плане его запуск ничем не отличается от запуска копии Visual FoxPro.

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