Вы можете использовать RAISEEVENT( ) для срабатывания, или вызывания события из пользовательского метода. Хотя RAISEEVENT( ) применяется прежде всего к методам пользователя, Вы можете использовать её для того, чтобы вызвать родные события и методы.

RAISEEVENT( oEventSource, cEvent [, eParm1...] )

Параметры

oEventSource   

Определяет источник события, который должен быть допустимым объектом Visual FoxPro.
cEvent

Определяет имя события, метода, или свойства, которое Вы хотите вызвать.
eParm1...

Определяет один или более параметров, чтобы их передать, если метод имеет параметры.

Возвращаемое значение

Логический тип данных. RAISEEVENT( ) всегда возвращает Истину (.T)..

Замечания

Visual FoxPro автоматически вызывает события для методов пользователя, которые являются связанными с объектами через BINDEVENT( ) , если методы называются напрямую. Например, следующий код не вызовет событие:

Скопировать код
oForm.GetMyData(cData)

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

Скопировать код
RAISEEVENT( oForm, "GetMyData", cData )

Вы можете также изменить это поведение, используя BINDEVENT( ) с nFlags установленным в 2 или 3.

Событие, которое Вы желаете вызвать, должно быть помечено Public , а не Hidden или Protected .

Если Вы используете RAISEEVENT( ) для свойства, Visual FoxPro устанавливает свойство в собственное значение. Следующий пример устанавливает свойство Caption для _SCREEN в текущее значение для Caption :

Скопировать код
RAISEEVENT( _SCREEN, "Caption" )

Вызов события не происходит, если Вы привязываетесь к событию, например, используя BINDEVENT( ) , котрое имеет параметры передаваемые по ссылке.

Visual FoxPro игнорирует рекурсивные вызовы RAISEEVENT( ) к событию, изнутри того же самого вызванного события.

Пример

Активизация формы или использования Form1.Show вызывает событие Activate для формы. Однако, вызывая событие Activate непосредственно через запрос типа Form1.Activate, не вызывает события Activate . Следующий пример показывает, как Вы можете использовать RAISEEVENT( ) для вызова события Activate :

Скопировать код
RAISEEVENT( Form1, "Activate" )

См. Также