Проверка активности формы Delphi
Владимир37
Дата: 23.05.2011 10:45:45
Здравствуйте! Есть такой вопрос: в программе есть DataModule и несколько форм. В DataModule на ADOQuery стоит обработчик AfterScroll, который срабатывает по разному в зависимости от того, какая форма активна. Активность формы проверяю условием if Form1.Active then.... Так вот форма активна, но в обработчике AfterScroll при активации формы переменная Form1.Active=false, потом переменная становится True и все работает нормально, но надо, чтобы AfterScroll срабатывал при активации формы. Открытие ADOQuery прописал в событии формы OnActivate, а перед открытием Query поставил проверку значения свойства Form1.Active, так оно равно True.
Shaman_Ist
Дата: 23.05.2011 13:03:30
Не совсем понял вопрос. Но, ежели телепатор меня не обманул, и ADOQuery в DataModule есть источник данных для нескольких форм, то можно сделать так:
1. в DataModule объявляешь переменную типа TForm (инициализируешь ее nil);
2. в обработчике OnActivate формы в эту переменную пишешь self;
3. в обработчике AfterScroll обращаешься к любым доступным свойствам формы на предмет идентификации (Name, Caption, Tag и т.д.);
4. Как определился, что за форма, - case или цикл или что там еще тебе в руки.
DetSimen
Дата: 23.05.2011 13:45:38
Screen.ActiveForm тебе в помощь
DetSimen
Дата: 23.05.2011 13:47:40
ах, да, и Screen.OnActiveFormChange
Владимир37
Дата: 23.05.2011 14:23:14
Ответ Shaman_Ist помог, только приходится следить за состоянием переменной типа TForm. А Screen.ActiveForm у меня работает так же, как и TForm1.Active, т.е. не сразу. Спасибо за ответы.