Распечатать страницу

Проект как объект VFP

« Назад

Проект является объектом Project, входящим в объект-коллекцию Projects, доступ к которой осуществляется через системную переменную _VFP, адресующую объект-приложение – текущий экземпляр VFP. (Коллекция Projects является свойством объекта _VFP.)

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

Пример. Выводятся имена всех открытых проектов.

for each proj in _VFP.Projects

? proj.Name

next

Ту же информацию выведет следующий код:

numberOfOpenProjects = _VFP.Projects.Count

for nCount = 1 to numberOfOpenProjects

? _VFP.Projects.Item(nCount).Name

next

Обратиться к элементу коллекции можно как по номеру, так и по имени. Причем в качестве имени можно брать имя файла без пути.

Пример. Изменяется свойство Visible проекта HomeLibrary.

&& Теперь диспетчер проектов станет невидимым

_VFP.Projects('d:\HomeLibrary\HomeLibrary.pjx').Visible = .F.

или

&& Имя файла берется без пути

_VFP.Projects('HomeLibrary.pjx').Visible = .F.

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

Пример. При каждой активизации любого из диспетчеров проекта будет выводиться предусмотренное обработчиком события Activate сообщение. (Событие Activate наступает, если диспетчер проекта активизируется интерактивно, например при ударе по окну диспетчера мышью, или программно в результате выполнения ACTIVATE WINDOW Project.)

Сообщение (рис. 9.2) выводится для проектов, открытых до выполнения следующего кода.

&& Хотя бы один проект должен быть открыт

oProjHook = NewObject('ProjHookClass')

for each proj in _VFP.Projects

proj.ProjectHook = oProjHook

next 

define class ProjHookClass as ProjectHook

procedure Activate

    MessageBox('Активизирован проект ' + Wontop( ))

endProc

endDefine

143.1.-Пример-сообщения-обработчика-события-Activate

Рис. 9.2. Пример сообщения обработчика события Activate

Доступ к файлам проекта осуществляется посредством его свойства Files, представляющего объект-коллекцию. Элементом этой коллекции является объект File – файл проекта.

Пример. Выводятся полные имена всех файлов открытого проекта.

&& Проект должен быть открыт

for each file in _VFP.Projects(1).Files

? file.Name

next

Серверы, которые создаются при построении EXE-приложения или DLL-библиотеки при наличии в проекте определений OLEPUBLIC-классов, управляются посредством объекта Server, являющегося элементом коллекции Servers. Сама коллекция является свойством объекта Project.

Пример. Выводятся имена классов всех имеющихся в проекте серверов.

&& Проект должен быть открыт

for each server in _VFP.Projects(1).Servers

? server.ServerClass

next

Подводя итог, приведем на рис. 9.3 представленную в справке VFP иерархию объектов приложения, раскрывая в ней ветвь Projects.

143.2.-Иерархия-объектов-приложения-с-детализацией-ветви-Projects

Рис. 9.3. Иерархия объектов приложения с детализацией ветви Projects

Замечание. Описание употребляемых с проектом объектов приведен в следующих темах справки VFP: _VFP System Variable, Projects Collection, Project Object, ProjectHook Object, Files Collection, File Object, Servers Collection, Server Object.