Для добавления нового Объекта в Контейнерный Класс (или Объект) вы можете использовать дополнительную секцию ADD OBJECT в стандартной команде DEFINE CLASS, или стандартный метод контейнерного класса AddObject.

Например, в следующем фрагменте программного Кода - создается контейнерный Объект = Форма (Form). Секция ADD OBJECT используется для добавления двух командных Кнопок в данной форме (дочерние для Формы объекты типа "CommandButton"):

  CopyCode imageКопировать Код
DEFINE CLASS myform AS FORM
ADD OBJECT cmdOK AS COMMANDBUTTON
ADD OBJECT PROTECTED cmdCancel AS COMMANDBUTTON
ENDDEFINE

Метод AddObject используется для добавления новых, дочерних Объектов в том случае, когда родительский Контейнер уже создан. Например, Сначала создается пользовательская Форма (переменная FrmMessage), далее создаются два поля для ввода (TextBox):

  CopyCode imageКопировать Код
frmMessage = CREATEOBJECT("FORM")
frmMessage.AddObject("txt1", "TEXTBOX")
frmMessage.AddObject("txt2", "TEXTBOX")

Вы можете также использовать описанный выше Метод AddObject внутри Метода Родительского класса. Например, далее приводится фрагмент программного Кода, где метод AddObject используется для добавления Контрола (cboClient типа ComboBox) во 2-ой Столбец объекта Grid, который выполняется в соответствующем Событии Init.

  CopyCode imageКопировать Код
DEFINE CLASS mygrid AS GRID
ColumnCount = 3
PROCEDURE Init
THIS.Column2.AddObject("cboClient", "COMBOBOX")
THIS.Column2.CurrentControl = "cboClient"
ENDPROC
ENDDEFINE

Expand imageДобавление и Создание Классов в программном Коде Метода

Добавить новый Объект в контейнерный Класс при помощи программного Кода вы можете использую метод AddObject. Для этих целей также можетт быть использована стандартная функция CREATEOBJECT( ), которая размещается в программном Коде событий Load, Init, или в другом Методе рассматриваемого контейнерного Класса.

При добавлении нового Объекта с помощью стандартного метода AddObject, данный Объект становится Членом указанного контейнерного Класса (родительского Объекта). В этом случае, стандартное свойство Parent добавленного Объекта будет содержать Ссылку на родительский объект - контейнер. Если родительский объект-контейнер или объект-контрол стираются из Памяти, то также очищаются все созданные в данных Контейнерах дочерние Объекты.

Когда новый дочерний Объект создается с помощью функции CREATEOBJECT( ), данный объект ассоциируется с некоторым Свойством Контейнера или другой Переменной рассматриваемого Метода, в котором вызвана указанная функция. В этом случае, Свойство Parent создаваемого Объекта - не определяется.

Expand imageСм. также