Распечатать страницу

Обеспечение доступа к объектам формы и набора форм VFP

« Назад

Осуществляется при помощи объектов-ссылок THIS, THISFORM и THISFORMSET.

Объект-ссылка THIS употребляется не только с формами и их наборами, но и в определениях иных классов.

Объект-ссылка

THIS.PropertyName | ObjectName

обеспечивает ссылку на текущий объект в коде события, метода или определении класса.

Параметры:

PropertyName – имя устанавливаемого или получаемого свойства.

ObjectName – имя объекта в классе.

Использование THIS для ссылки на текущий объект вместо имени объекта дает возможность употребить один и тот же код для нескольких объектов (поскольку опускается уникальное имя объекта). Так, вместо

ThisForm.CmdShowCaption.Caption

в обработчике события, например Click, объекта cmdShowCaption можно употребить

This.Caption

Методы в определении класса могут использовать THIS для указания свойства или объекта, который будет существовать после создания класса.

THIS всегда адресует экземпляр объекта, код которого выполняется.

Пример. THIS адресует SomeForm и употребляется в определении свойств класса и в его методе ChangeBackColor.

public oForm

oForm = NewObject('SomeForm')

oForm.Show 

define class SomeForm as Form

&&

Caption = "Изменение фона"

Height = 30

Width = 10 * This.Height   && Используем THIS

&&

add object cmdShowCaption as CommandButton with Caption = "Кнопка"

&&

&& Метод создаваемой формы

procedure ChangeBackColor(NewColor)

    This.BackColor = NewColor    && Используем THIS

endProc

&&

&& Обработчик события Click кнопки cmdShowCaption

procedure cmdShowCaption.Click

wait window This.Caption && Используем THIS

&& или: wait window ThisForm.CmdShowCaption.Caption

&&

&& Меняем цвет фона формы на черный

&& Используем THISFORM. Употребление THIS для обращения

&& к методу ChangeBackColor в этом обработчике недопустимо, поскольку

    && кнопка такого метода не имеет

ThisForm.ChangeBackColor(RGB(0, 0, 0))

endProc

endDefine

Объект-ссылка

THISFORM.PropertyName | ObjectName

позволяет ссылаться на текущую форму в коде события, метода или определении класса.

Параметры:

PropertyName – имя свойства формы или ее объекта.

ObjectName – объект в форме.

Пример. В обработчике события Click формы или элемента управления формы (любого уровня вложенности) выполнение следующего кода приведет к изменению заголовка командной кнопки Command1.

&& Элемент управления Command1 должен присутствовать в форме

ThisForm.Command1.Caption = Time( )

Употребление ThisForm взамен имени формы (свойство Name), например

Form1.Command1.Caption = Time( )

позволяет использовать один и тот же код с разными формами и делает его независимым от значения свойства Name.

Также ThisForm освобождает от использования в коде многочисленных Parent, например если форма имеет 2 кнопки (Command1 и Command2), то в обработчике события Click кнопки Command2 можно в принципе вместо ThisForm применить This.Parent:

This.Parent.Command1.Caption = Time( )

Такой же код будет работать и в обработчике события Click кнопки Command1, но он явно избыточен, поскольку тот же эффект имеет оператор

This.Caption = Time( )