Рефераты. OLE VFP

OLE VFP

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

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

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

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

«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.

Эта новая возможность существенно расширяет возможности использования
Visual 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 |Property - свойство формы. |
|[ = Setting] |Setting - значение свойства. |
|ActiveForm.Method |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 по умолчанию равен .F. - |
|[ = lExpression ] |сообщение об ошибке будет появляться. Если |
| |параметр равен .Т., сообщения будет. |
| |Определяет появление сообщения об ошибке, |
| |когда истекает время, установленное в |
| |свойстве 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 |nWorkArea, cTabieAlias — рабочая область или|
|| cTableAlias ] [, nRecords ] |псевдоним источника данных. |
|[, nClipFormat]) |nRecords — число копируемых записей. |
| |uClipFormat по умолчанию равен 1, при этом |
| |данные полей разделяются пробелами. Если |
| |параметр равен 3, данные разделяются знаком |
| |табуляции. |
| |Копирует записи в буфер обмена в виде |
| |текста, в котором каждая запись занимает |
| |отдельную строку. |
|DoCmd (cCommand) |cCommand - выражение, представляющее команду|
| |VFP. |
| |Позволяет выполнить команду Visual FoxPro из|
| |приложения являющегося OLE-контроллером. |
|Eval (cExpression) |cExpression - выражение, которое необходимо |
| |преобразовать. |
| |Преобразует выражения и возвращает его в |
| |Visual FoxPro. |
|Help ([cFileName] |cFileName - имя и путь к файлу оперативной |
|[, nContexId] [, cHelpTopic]) |помощи. NContextID - идентификатор раздела.|
| |cHelpTopic - тема раздела. |
| |Открывает окно с контекстной справкой. |
|Quit() |Закрывает запущенную копию приложения Visual|
| |FoxPro. |
|RequestData ([nWorkArea | |nWorkArea, cTableAlias - рабочая область или|
|cTableAlias] [, nRecords]) |псевдоним источника данных. 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, как правило, влечет аварию управляющей программы.

Сервер ЕХЕ имеет еще одно преимущество. Он может выполнять роль OLE- сервера и обычного приложения Visual FoxPro. Таким образом, если приложение- контроллер использует сервер для выполнения процесса, который может быть весьма ресурсоемким, но выполняется локально на этом сервере, мы получим выигрыш в производительности.

Покажем простейший пример создания OLE-сервера Visual FoxPro. Создадим новый проект Ole_serv, в котором будет один программный файл со следующим кодом:

DEFINE CLASS OLE_SERV AS CUSTOM OLEPUBLIC

PROCEDURE INIT

MESSAGEBOX(PROGRAM(), "РАБОТАЕТ МОЙ ПЕРВЫЙ OLE-SERVER")

Страницы: 1, 2



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.