ПРИЛОЖЕНИЕ. Visual FoxPro иерархия событий

0) Событие BeforeOpenTable для Data Environment

1) Событие Load Formы Событие Load наступает самым первым перед всеми остальными событиями формы.

2) Инициализация Data Environment
Инициализация объекта "Data Environment" осуществляется после загрузки формы, но перед ее инициализацией и перед инициализацией любого из объектов управления формы. Это необходимо для того, чтобы была возможность связывания данных из таблиц с элементами управления в форме.

2) Инициализация элементов управления формы
Перед инициализацией формы инициализируются все элементы управления, которые в ней содержатся. Если один из элементов в процессе своей инициализации вернул значение FALSE (.F.) из своего события INIT(), оставшиеся элементы управления и сама форма не инициализируются, а вызывается событие "Destroy".

3) Инициализация формы
Наступает инициализация формы. В ходе этого события можно использовать данные из таблиц. Можно устанавливать указатель записи таблиц, открытых в "Data Environment" или "Load Event" формы. Если событие INIT() вернуло значение FALSE (.F.) форма не активизируется и вызывается событие "Destroyt".

5) События WHEN() и "Focus для элементов управления формы "
После завершения активизации формы выполняется событие WHEN() для первого элемента управления в форме. Если оно удовлетворяется, т.е. в нем нет кода или оно вернуло значение TRUE (.T.), форма передает фокус этому элементу. Если событие WHEN() для первого элемента не выполнелось, т.е. код возврата FALSE (.F.), Visual FoxPro проверяет событие WHEN() для следующего элемента управления. Если ни один из элементов не получил фокус, сама форма не может получить фокус.

6) Другие события при выполненн формы
После того как элемент управления получил фокус, могут наступить другие события, например, "KeyPress" или события обработки мыши..
Событие VALID() вызывается перед событием LostFocus(). Только когда VALID() вернет .T. или есть код, который позволит пользователю покинуть поле, наступает событие LostFocus().
Клик мыши вызвает события MouseDown() и MouseUp() перед самим событием Click(). И затем только после этих трех событий наступает событие Valid() (Если клик пришелся вне поля, на котором только что было управление).

7) Закрытие формы
Когда нажата клавиша для закрытия формы, наступает последовательность событий, подобная той, что была при открытии формы :

				QueryUnload()  событие.
				Form's  Destroy() событие.
				Destroy() событие для каждого элемента.
				Form's событие Unload(), если все события Destroy()  завершились успешно.
				Наконец,  DataEnvironment  закрывает все таблицы и файлы.
				AfterCloseTables() событие,  перед событием .....
				Destroy() для DataEnvironment
Hosted by uCoz