Объектная модель в Visual FoxPro делает возможным управлять свойствами формы в run time.
Ссылка на объекты в иерархии объектов
Для управления объектом в коде, вам необходимо идентифицировать его по отношению к иерархии контейнеров. На верхнем уровне контейнерной иерархии находится форма или набор форм, на которые вам необходимо ссылаться в объектной ссылке. Если вы не используете опцию NAME команды DO FORM объектная переменная имеет тоже самое имя, что и файл формы (.scx) file.
Для управления свойствами
-
В коде, ссылка переменной объекта, элемента управления и затем свойство используют точку, (.) в качестве разделителя в приведенном ниже формате:
ObjectVariable.[Form.]Control.Property = Setting
В приведенной ниже таблице перечислены свойства и ключевые слова, которые позволяют вам легко ссылаться на объект в его иерархии.
Свойство или ключевое слово | Ссылки |
---|---|
Элемент управления в текущей активной форме, которые имеет фокус. |
|
Текущая активная форма. |
|
Активная страница на текущей активной форме. |
|
Непосредственный контейнер объекта |
|
Объект, или процедура, или событие объекта. |
|
Форма, которая содержит этот объект. |
|
Набор форм, который содержит этот объект. |
Например, для того, чтобы изменить заголовок командной кнопки на форме
frmCust
в наборе форм, хранящемся в Custview.scx, используйте приведенную ниже команду в
программе или в командном окне:
![]() | |
---|---|
CustView.frmCust.cmdButton1.Caption = "Edit" |
Используйте ключевые слова THIS, THISFORM и THISFORMSET для ссылки на объекты внутри формы. Например, для того, чтобы изменить заголовок командной кнопки, когда по ней производится щелчок, включите приведенную ниже команду в ее событие Click:
![]() | |
---|---|
THIS.Caption = "Edit" |
Приведенная ниже таблица дает примеры использования THISFORMSET, THISFORM, THIS и Parent для установки свойств объекта:
Command | Where to include the command |
---|---|
|
В событии или методе любого элемента управления на любой форме
в наборе форм, за исключением |
|
В событии или методе любого элемента управления за исключением |
|
В событии или методе элемента управления, чей заголовок вы желаете изменить. |
|
В событии или методе любого элемента управления на форме. Команда изменяет цвет фона формы в темно-красный. |
Установка свойств в Run Time с помощью выражений
Вы можете, кроме того, установить свойства в run time с помощью выражений или функций.
Для установки свойств в выражения в run time
-
Присвойте свойству выражение.
- или -
-
Присвойте свойству результат функции, определенной пользователем.
Например, вы можете установить заголовок кнопки в Edit или Save, в зависимости от значения переменной. Задекларируйте переменную в вызывающей форму программе:
Скопировать код
PUBLIC glEditing glEditing = .F.
Затем используйте выражение IIF в установке Caption:
Скопировать код
frsSet1.frmForm1.cmdButton1.Caption = ; IIF(glEditing = .F., "Edit", "Save")
Вы можете определить размер кнопки с установить заголовок, используя выражения из полей таблицы:
![]() | |
---|---|
* установите ширину кнопки в длину 'Call ' + имя и фамилия frmForm1.cmdButton1.Width = 5 + ; LEN(ALLTRIM(employee.first_name + " " + employee.last_name)) * установите ширину кнопки в длину 'Call ' + имя и фамилия frmForm1.cmdButton1.Caption = "Call " + ; ALLTRIM(employee.first_name + " " + employee.last_name) |
Вы можете, кроме того, установить заголовок с помощью пользовательской функции:
![]() | |
---|---|
frsSet1.frmForm1.cmdButton1.Caption = setcaption() |
Установка множества свойств
Вы можете установить сразу множество свойств.
Для установки множества свойств
-
Используйте командную структуру WITH ... ENDWITH Command.
Например, для установки множества свойств колонки в элементе управления grid на форме, вы могли бы включить приведенное ниже предложение в любое событие или метод формы:
Скопировать код
WITH THISFORM.grdGrid1.grcColumn1 .Width = 5 .Resizable = .F. .ForeColor = RGB(0,0,0) .BackColor = RGB(255,255,255) .SelectOnEntry = .T. ENDWITH
Вызов методов в Run Time
После создания объекта, вы можете вызывать методы этого объекта из любого места вашего приложения.
Для вызова метода объекта
-
Используйте следующий синтаксис:
Parent.Object.Method
Например, приведенный ниже код вызывает методы для отображения формы и устанавливает фокус на командную кнопку:
![]() | |
---|---|
* Набор форм сохранен в файле MYF_SET.SCX myf_set.frmForm1.Show myf_set.frmForm1.cmdButton1.SetFocus |
Чтобы спрятать форму, выдайте эту команду:
![]() | |
---|---|
myf_set.frmForm1.Hide |