инициализация диалога
От: Аноним  
Дата: 22.10.04 10:32
Оценка:
Добрый вечер.
вызываю я диалог как form4.ShowModal;
в диалоге form4 при появлении обрабатываю событие OnActive .
чего-то делаю — закрываю диалог
потом мне опять нужно зайти в этот диалог , и при открытии хочется опять обработать OnActive — так как будто первый раз открыли диалог
однако там все так как бало перед закрытием диалога. — так как будто его и не закрывали. и OnActive не отрабатывается
Как такое осуществить ?
Re: инициализация диалога
От: Eyfel Россия  
Дата: 22.10.04 10:55
Оценка:
Здравствуйте, <Аноним>, Вы писали:

попробуйте его создавать просто перед показам...а при выходе уничтожать экземпляр объекта...
А так когда вы его закрываете он не уничтожаем экзмемпляр вашей формы, а держить ее в памяти и при взове form4.ShowModal просто подымает ее из памяти...
... << RSDN@Home 1.1.4 beta 3 rev. 185>>
Re: инициализация диалога
От: ak_miass Россия  
Дата: 22.10.04 12:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый вечер.

А>вызываю я диалог как form4.ShowModal;
А>в диалоге form4 при появлении обрабатываю событие OnActive .
А>чего-то делаю — закрываю диалог
А>потом мне опять нужно зайти в этот диалог , и при открытии хочется опять обработать OnActive — так как будто первый раз открыли диалог
А>однако там все так как бало перед закрытием диалога. — так как будто его и не закрывали. и OnActive не отрабатывается
А>Как такое осуществить ?

Если в OnActive диалог инициализируется (заполняются всякие Edit-ы и т. д.), то это неправильно. Лучше это делать перед вызовом ShowModal() и тогда таких проблем не будет.
Re[2]: инициализация диалога
От: Dimonka Верблюд  
Дата: 22.10.04 12:50
Оценка:
Здравствуйте, ak_miass, Вы писали:

_>Если в OnActive диалог инициализируется (заполняются всякие Edit-ы и т. д.), то это неправильно. Лучше это делать перед вызовом ShowModal() и тогда таких проблем не будет.


Согласен
хотя OnShow тоже неплохое место для инициализации.
Re: инициализация диалога
От: Andy Caramba  
Дата: 29.12.04 08:50
Оценка:
Здравствуйте, <Аноним>, Вы писали:

А>Добрый вечер.

А>вызываю я диалог как form4.ShowModal;
А>в диалоге form4 при появлении обрабатываю событие OnActive .
А>чего-то делаю — закрываю диалог
А>потом мне опять нужно зайти в этот диалог , и при открытии хочется опять обработать OnActive — так как будто первый раз открыли диалог
А>однако там все так как бало перед закрытием диалога. — так как будто его и не закрывали. и OnActive не отрабатывается
А>Как такое осуществить ?

способов несколько:
1. в диалоге form4 в обработчике OnClose напиши Action:=caFree;
2. там где ты вызываешь диалог, после ShowModal делай Free;
3. обрабатывай событие не на OnActivate а например на OnShow.

P.S. В общем суть такова, что событие OnActivate обрабатывается только после OnCreate (если я не ошибаюсь). А твой диалог после закрытия не уничтожается, а лишь прячется (Hide), и при повторном вызове обработка начинается с события OnShow, пропуская OnCreate и OnActivate. (Это если память меня не подводит)

P.P.S. для (1) и (2) форма диалога должна создаваться динамически.
... << RSDN@Home 1.1.3 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.