Иерархия контейнера и класса представляют собой две раздельные сущности. Ссылки на объект связаны с иерархией контейнера, тогда как Visual FoxPro ищет код для события в иерархии класса.

Для управления объектом вам необходимо идентифицировать его относительно иерархии контейнера. Например, для управления элементом на форме в наборе форм, вам необходимы ссылки на набор форм, на форму и затем на элемент.

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

Приведенный рисунок иллюстрирует возможную ситуацию вложенности контейнеров.

Вложенные контейнеры

FoxProFormSetProperties graphic

Для запрещения элемента в колонке решетки , вам необходимо предоставить следующий адрес:

  CopyCode imageСкопировать код
Formset.Form.PageFrame.Page.;
 Grid.Column.Control.Enabled = .F.

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

  CopyCode imageСкопировать код
_VFP.ActiveForm.BackColor = RGB(255,255,255)

Аналогично, свойство ActiveControl позволяет вам управлять активным элементов на активной форме. Например, приведенное выражение, введенное в окно Watch отобразит имя активного элемента на форме, как если бы вы выбрали элемент интерактивно:

  CopyCode imageСкопировать код
_VFP.ActiveForm.ActiveControl.Name

Относительное обращение

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

Свойство или ключевое слово Ссылка

Parent

Ближайший контейнер объекта.

THIS

Сам объект.

THISFORM

Форма, которая содержит данный объект.

THISFORMSET

Набор форм, который содержит данный объект.

NoteЗамечание

Вы можете использовать THIS, THISFORM и THISFORMSET только в методах или в процедурных кодах событий.

В приведенной ниже таблице приведены примеры использования THISFORMSET, THISFORM, THIS и Parent для установки свойств объекта:

Команда Где включить эту команду

THISFORMSET.frm1.cmd1.Caption = "OK"

В процедурном коде события или коде метода любого элемента на форме или в наборе форм.

THISFORM.cmd1.Caption = "OK"

В процедурном коде события или коде метода любого элемента на той же самой форме, где располагается этот cmd1.

THIS.Caption = "OK"

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

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

В процедурном коде события или коде метода любого элемента в том же самом контейнере, в котором находится элемент,  из кода которого меняется свойство родительского контейнера.  (Выделено переводчиком. Перевод изменен сознательно, дабы исключить двоякость толкования, приведенного в оригинале).

Смотрите также