Обозреватель классов

Вы вправе предположить, что все действия по созданию классов в Конструкторе классов заставляют Visual FoxPro генерировать код, который и будет исполняться при работе вашего приложения. Это действительно так. Посмотреть этот код, а, кроме того, и структуру класса, позволяет специальный инструмент, который называется Обозреватель классов (Class Browser).
Для вызова Обозревателя классов выберите в главном меню пункт Tools, и в выпавшем меню — пункт Class Browser. Альтернативный способ вызова Обозревателя классов — щелчок мышью по кнопке Class Browser стандартной панели инструментов Visual FoxPro. Расположение этого компонента на панели показано на рис. 11.25.

Рис. 11.25. Кнопка Class Browser на панели инструментов Standard.

Окно Обозревателя классов показано на рис. 11.26.

Рис. 11.26. Окно Обозревателя классов

В верхней части окна Обозревателя располагаются инструментальные кнопки, назначение которых приведено в табл. 11.12.

Таблица 11.2. Кнопки инструментальной панели Обозревателя классов

  Название Выполняемое действие
Component Gallery Переключение между окном Обозревателя классов и окном Галереи компонентов
Open Открывает для просмотра и изменения новую библиотеку классов, форму, проект или программный файл, содержащий определения классов
View Additional File Добавляет существующую библиотеку классов или форму к списку классов
View Class Code Выводит окно, содержащее код класса
Find Поиск определенного текста в именах класса, описаниях класса, именах и описаниях реквизитов
New Class Создаёт класс-потомок для выбранного класса
Rename Изменяет имя выбранного класса, свойства или метода
Предостережение:
Переименование класса может аннулировать форму или класс, который в настоящий момент не отображается в окне Обозревателя классов и который вложен в этот класс. Изменение имени свойства или метода может привести к потере кода.
Redefine Заменяет класс-родитель указанного класса
Clean Up Class Library Упаковывает библиотеку классов (выполняет команду PACK MEMO для таблиц Конструктора классов)

Нажмите кнопку Open и в появившемся стандартном диалоговом окне открытия файла выберите интересующую вас библиотеку классов. Так, если вы в процессе чтения этой главы добросовестно создавали библиотеку классов MyClasses, то выберите файл myclasses.vcx. Обратите внимание на то, что вы можете открыть в Обозревателе классов не только библиотеку классов, но и форму (файлы с расширением .scx), проект (файлы с расширением .pjx) и даже программный файл, содержащий определения классов.
Окно Обозревателя классов с загруженной библиотекой myclasses.vcx показано на рис. 11.27.

Рис. 11.27. Окно Обозревателя классов с загруженной библиотекой классов

В левой области окна Обозревателя отображаются классы, включенные в библиотеку классов; используемая здесь иерархическая структура представления данных позволяет отследить наследование, в частности, видно, что класс mytwoform является наследником класса myclassform. Перемещаясь по узлам с именами классов, в правой части окна вы увидите список объектов, включенных в этот класс, а так же перечень добавленных вами свойств и методов. В нижней части окна выводится информация о классе: имя класса, имя базового класса Visual FoxPro и дата последнего изменения.
Если вы дважды щёлкнете мышью по имени класса, то Обозреватель вызовет Конструктор классов, в окно которого будет закружен выбранный класс.
При щелчке мышью по имени свойства в правой области окна выводится окно, в котором вы увидите значение по умолчанию для выбранного свойства; аналогично, щелчок по наименованию метода загружает Конструктор классов и выводит окно редактора кода, содержащее код этого метода.
Наиболее интересной является кнопка View Class Code. При щелчке мышью по этой кнопке выводится окно, содержащее полный код класса. Вы можете копировать фрагменты этого кода; вы можете распечатать код на принтере; но вы не можете в этом окне выполнять функции редактирования.
В листинге 11.6 показан код созданного нами класса MyContainer, сгенерированный Обозревателем классов при нажатии на кнопку View Class Code.

 Листинг 11.6. Код класса MyContainer

 
 DEFINE CLASS mycontainer AS container

 Width = 513
 Height = 33
 value = 0
 Name = "mycontainer"
 
 ADD OBJECT command1 AS commandbutton WITH ;
    Top = 1, ;
    Left = 3, ;
    Height = 25, ;
    Width = 85, ;
    Caption = "Добавить", ;
    Name = "Command1"

 ADD OBJECT command2 AS commandbutton WITH ;
    Top = 1, ;
    Left = 87, ;
    Height = 25, ;
    Width = 85, ;
    Caption = "Изменить", ;
    Name = "Command2"

 ADD OBJECT command3 AS commandbutton WITH ;
    Top = 1, ;
    Left = 171, ;
    Height = 25, ;
    Width = 85, ;
    Caption = "Удалить", ;
    Name = "Command3"

 ADD OBJECT command4 AS commandbutton WITH ;
    Top = 1, ;
    Left = 416, ;
    Height = 25, ;
    Width = 85, ;
    Caption = "Печатать", ;
    Name = "Command4"

 ADD OBJECT label1 AS label WITH ;
    AutoSize = .T., ;
    BackStyle = 0, ;
    Caption = "Фильтр", ;
    Height = 17, ;
    Left = 262, ;
    Top = 5, ;
    Width = 44, ;
    Name = "Label1"

 ADD OBJECT combo1 AS combobox WITH ;
    Height = 25, ;
    Left = 309, ;
    Top = 1, ;
    Width = 100, ;
    Name = "Combo1"

 PROCEDURE command1.Click
    this.Parent.value = 1
    this.Parent.Click()
 ENDPROC

 PROCEDURE command2.Click
    this.Parent.value = 2
    this.Parent.Click()
 ENDPROC

 PROCEDURE command3.Click
    this.Parent.value = 3
    this.Parent.Click()
 ENDPROC 

 PROCEDURE command4.Click
    this.Parent.value = 4
    this.Parent.Click()
 ENDPROC

 ENDDEFINE
 

Замечание
Код, генерируемый Обозревателем классов, мягко говоря, не всегда соответствует действительности. Например, для формы, на которой размещён управляющий элемент Grid, будет сгенерирован неверный код. Это замечание относится ко всем управляющим элементам контейнерного типа (например, PageFrame). В общем случае вы должны иметь отдельные классы для объектов — контейнеров со всеми включенными в них управляющими элементами и при объявлении класса формы добавлять в неё уже эти классы.

Подробно с командами объявления класса вы познакомитесь в следующем разделе этой главы, а сейчас рассмотрим остальные элементы инструментальной панели Обозревателя классов.
На рис. 11.27 слева от выпадающего списка вы видите пиктограмму. Эта пиктограмма появляется, когда вы выделяете класс в иерархическом списке классов. Вы можете перетащить эту пиктограмму на форму (для этого форма должна быть открыта в окне Конструктора форм или классов), и Visual FoxPro создаст на ней объект — экземпляр класса.
Выпадающий список содержит перечень базовых классов Visual FoxPro. Выбранное из списка значение будет использоваться как фильтр по базовому классу. Так, если вы выберете в этом списке «Form», то в иерархическом списке останутся только классы, порождённые от базового класса Form.