Базы данных Visual Foxpro

         

Использование вложенных объектов

В Visual FoxPro имеются базовые классы, предназначенные для создания вложенных объектов, например, класс Grid (Таблица). При ссылке на вложенный объект необходимо перечислить все объекты, в которые он входит, разделяя элементы списка точками. Например, ссылка на столбец coicustomerid объекта customer типа Grid (Таблица) определяется следующим образом:



Customer.colCustomerld

Ссылка такого типа называется абсолютной. В Visual FoxPro кроме абсолютной ссылки, которая при большой глубине вложения объекта является слишком громоздкой, вы можете использовать относительные ссылки, т. е. ссылки относительно активных в данный момент объектов (сам объект, форма, в которую входит объект, и группа форм), что значительно сокращает список объектов ссылки и позволяет получить доступ к объекту, даже если вы не знаете его имени.

Ссылка на активную форму осуществляется с помощью свойства ActiveForm (Активная форма) объекта (_SCREEN). Например, следующее выражение позволяет изменить заголовок активной формы:

_SCREEN.ActiveForm.Caption= "Заголовок формы"

Аналогично, свойство ActiveControi (Активный элемент управления) позволяет получить доступ к активному объекту формы, а свойство ActivePage (Активная вкладка) — к активной вкладке формы. Например, следующее выражение позволяет изменить надпись активной кнопки

_SCREEN.ActiveControl.Caption= "Печать отчета"

При ссылке на вложенный объект вы можете использовать свойство Parent (Родительский) и ключевые слова для идентификации объекта, к которому вы хотите получить доступ. Свойство Parent (Родительский) содержит ссылку на непосредственный контейнер объекта. Список ключевых слов и определяемые ими ссылки приведены в табл. 19.7.

Таблица 19.7. Ключевые слова для идентификации объектов

Наименование Ссылка
THIS На сам объект
THISFORM На форму, которая содержит объект
THISFORMSET На группу форм, которая содержит объект

Для примера определим цвет текущего объекта и объекта, являющегося его непосредственным контейнером, а также заголовки формы и группы форм, которые содержат данный объект:

THIS.BackColor=RGB(255,255,255)

THIS.Parent.BackColor=RGB(192,0,0)

THISFORM.Caption="Форма, содержащая объект"

THISFORMSET.Caption="Группа форм, содержащая объект"

Каждый объект обрабатывает связанные с ним события независимо. Поэтому контейнер не может реагировать на события вложенного в него объекта даже в том случае, если данный объект не содержит метода для обработки события, а контейнер может реагировать на данное событие.

Ранее мы рассмотрели команды создания формы и присвоения ей заголовка. Теперь дополним эти команды командами размещения в форме кнопки, являющейся по отношению к ней вложенным объектом:

f rmNew=CREATEOBJECT ( "FORM")

frmNew.Caption="Форма, созданная с помощью команд"

frmNew.Show()

frmNew.AddObject("Button", "CommandButton")

cmdButton=frmNew.Button

cmdButton.Visible=.Т.

cmdButton.Top=190

cmdButton.Left=120

cmdButton.Width=70

cmdButton.Height=3 0

cmdButton.Caption="Выход"

Команда frmNew.AddObject("Button", "CommandButton") создает В frmNew на основе базового класса CommandButton (Кнопка управления) новый объект Button (Кнопка). Следующая команда делает видимой созданную кнопку. На рис. 19.7 показана форма, созданная этими командами.

Совет

В прикладных программах объекты желательно сохранять невидимыми до полного определения всех их свойств.

Рис. 19.7. Форма с вложенным объектом — кнопкой

 

Содержание раздела