Проект как объект 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 Рис. 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. Рис. 9.3. Иерархия объектов приложения с детализацией ветви Projects Замечание. Описание употребляемых с проектом объектов приведен в следующих темах справки VFP: _VFP System Variable, Projects Collection, Project Object, ProjectHook Object, Files Collection, File Object, Servers Collection, Server Object. |