Обеспечение доступа к объектам формы и набора форм 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( ) |