Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв БД 2013-03-15.doc
Скачиваний:
0
Добавлен:
10.01.2020
Размер:
12.65 Mб
Скачать

2.7. События и методы

Аналогично свойствам наследуются события и методы базового клас­са (прил. 4), на основе которого создается объект. Список методов, оп­ре­де­лен­ных для объекта, отображается во вкладке Methods окна свойств объекта. Для каждого события определен соответствующий ему метод, ко­то­рый выполняется при возникновении данного события. Например, метод Click выполняется при нажатии кнопки мыши. Список доступных методов обработки событий определяется базовым классом. Именно эти методы обеспечивают обработку всех действий пользователя (нажатие клавиш, управление мышью). Visual FoxPro предоставляет возможность моди­фи­ци­ро­вать действия, выполняемые при обработке события данного объекта. Для редактирования метода установите курсор на этот метод в списке методов и нажмите два раза на кнопку мыши. На экране открыва­ется окно редактирования метода, в котором вы можете написать програм­му обработки события. Например, для кнопки вы можете определить программу создания отчета, которая вызывается при нажатии на данную кнопку.

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

Команда Mouse позволяет программным путем имитировать события Click, DoubleClick, MouseMove и DragDrop. Остальные события не могут имитироваться программно, но вы можете вызвать методы, связанные с этими событиями.

Кроме методов, связанных с событиями, объект может содержать и дополнительные методы, которые выполняются только при их вызове. Например, для формы могут быть определены методы перехода на следующую запись, удаления записи и т.п. Эти методы могут насле­до­вать­ся из базового класса, но вы можете создавать новые методы и для отдельных объектов. Для создания нового метода выполните команду Form|New Method конструктора форм и в окне диалога New Method определите имя и дайте краткое описание метода. Созданный метод до­бав­ляется в список методов объекта, и вы можете открыть окно редакти­ро­вания метода для ввода программного кода.

Для выполнения метода необходимо указать не только его имя, но и объект, к которому будет применяться данный метод. Имя объекта и имя метода разделяются точкой. Например, для выполнения метода CalcSum формы Sales необходимо выполнить команду Sales.Calcsum().

Вложенность объектов

Объекты, созданные на основе классов-контейнеров, могут содержать другие объекты. Ссылка на вложенный объект осуществляется путем перечисления объектов, содержащих этот объект. Элементы списка разделяются точками. Например, для ссылки на столбец colCountry объекта-сетки grdAddress, которая также является объ­ек­том, необходимо написать grdAddress .colCountry. Такая ссылка назы­ва­ется абсолютной. Если глубина вложения объекта большая, то абсо­лют­ная ссылка может включать в себя слишком много объектов и будет слишком громоздкой. В Visual FoxPro имеются средства, которые позволяют сократить список объектов ссылки.

Для ссылки на активную форму вы можете использовать свойство ActiveForm экранного объекта (_Screen), что позволяет получить доступ к активной форме, даже если вы не знаете ее имени. Например, следующее выражение позволяет изменить заголовок активной формы:

SCREEN. ActiveForm. Сарtiоп=“Новый заголовок формы”.

Аналогично свойство ActiveControl позволяет вам получить доступ к активному объекту формы, а свойство ActivePage ‑ к активной странице формы. Например, следующее выражение позволяет изменить надпись активной кнопки: _Screen.ActiveControl.Сарtiоп=“Печать ведомости“.

При ссылке на вложенный объект вы можете использовать свойство Parent и ключевые слова для идентификации объекта, к которому хотите получить доступ. Свойство Parent содержит ссылку на непос­ред­ст­вен­ный контейнер объекта.

Ключевые слова для идентификации объектов: This (на сам объ­ект), Thisform (на форму, которая содержит объект), Thisformset (на груп­пу форм, которая содержит объект).

В качестве примера определим цвет текущего объекта и объекта, яв­ля­ющегося его непосредственным контейнером, а также заголовки формы и группы форм, которые содержат данный объект:

This.BackColor=RGB(255,255,255)

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

Thisform.Caption= “Форма, содержащая объект“

Thisformset.Caption=“'Группа форм, содержащая объект“.

Каждый объект обрабатывает связанные с ним события независимо. Поэтому контейнер не может реагировать на события вложенного в него объекта даже в том случае, если данный объект не содержит метода для обработки события, а контейнер может реагировать на данное событие.

Ранее мы рассмотрели команды создания формы и присвоения ей заголовка. Дополним их командами размещения в форме кнопки. Кнопка по отношению к форме является вложенным объектом (прил. 5):

frmTest=Createobject (“FORM“)

frmTest.Show()

frmTest.AddObject (“Button“, “CommandButton“)

cmdButton=frmTest. Button

crndButton.Visible= .T.

cmdButton.Top=190

cmdButton.Left=120

crndButton. Width=70

cmdButton.Height=30

cmdButton.Caption=“Bыход“.

Команда frmTest.AddObject (“Button“, “CommandButton“) создает в frmTest новый объект Button, используя при создании этого объекта ба­зо­вый класс CommandButton. Следующая команда делает видимой соз­дан­ную кнопку. В прикладных программах лучше сохранять объекты неви­ди­мы­ми до полного определения всех их свойств.