Реферат: OLE VFP
· 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")
ENDDEFINE
Нажмем кнопку Build и создадим EXE- или DLL-файл. Если вы внимательно следили за сообщениями появляющимися в процессе построения файла, то наверняка заметили сообщение «Creating Type Library and Registering OLE Server», котоðое свидетельствует о создании и регистрации нашей программы как OLE-сервера. Напомним, что это произошло из-за наличия опции OLEPUBLIC в команде описания класса.
При построении OLE-сервера (OLE_SER.EXE или OLE_SER.DLL) создаются файлы OLE_SERV.TLB и OLE_SERV.VBR.
Файл TLB — это библиотека OLE-o6ъектов сервера, которая может быть просмотрена с помощью Visual FoxPro Class Browser, Excel, Visual Basi c и Visual C. Файл VBR - это текстовый файл с данными для записи в Регистре W indows.
Теп ерь можно набрать в командном окне следующую строчку:
oObj = CREATEOBJECT("OLE_SERV.OLE_SERV")
После непродолжительного ожидания, требующегося для загрузки сервера вы увидите окно с заголовком «Работает мой первый OLE-сервер!» и сообщением с именем выполняемой в данный момент процедуры - Init.
Хотя наш OLE-сервер не выполняет никакой полезной работы, свидетельством его активности могут служить следующие cтрочки: