Показать сообщение отдельно
Старый 11.04.2005, 14:27   #2  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Закономерность вполне логичная:

1) При открытии формы первым вызывается триггер OnOpenForm()
2) При закрытии формы сначала вызывается OnQueryCloseForm(), а после OnCloseForm()

При открытии формы происходят несколько многопоточных операций:
- получение формой фокуса
- поиск и выборка записей из источника

Триггеры этих операций при открытии формы могут вызываться вперемешку, например, OnActivateForm() может отработать до OnFindRecord(), а может после. Все зависит от сложности формы.

Операция получения фокуса: триггер OnActivateForm(), потеря фокуса - OnDeactivateForm(). Обычно при закрытии формы последовательность триггеров такая: OnDeactivateForm(), OnQueryCloseForm(), OnCloseForm().

Теперь про триггеры выборки записи:
Алгоритм выборки и заполнения таблицы работет по вот такой схеме
FIND;
REPEAT
GETRECORD;
GETCURRRECORD только для выбранной записиl
UNTIL NEXT = 0;

FIND - OnFindRecord()
GETRECORD - OnAfterGetRecord()
GETCURRRECORD - OnAfterGetCurrRecord()
NEXT - OnNextRecord();