Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что происходит между OnClose и OnDestroy ? [D2, D3, D4, D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]


BFG9k ©   (2005-10-28 18:37:00) 


procedure TForm1.OnDestroy(Sender:TObject);
begin
  ShowMessage('DESTOY');
end;

procedure TForm1.OnClose(Sender: TObject; var Action: TCloseAction);
begin
  ShowMessage('CLOSE');
end;


Результат работы программы : вылезает сообщение CLOSE и далее происходит ошибка. Вопрос : где она может произойти в таком случае ?

Пробовал делать так :


procedure TForm1.Destroy;
begin
  ShowMessage('DESTROY');
  inherited;
end;


Результат тот же : CLOSE видим, а DESTROY - нет.


fellix   (2005-10-28 19:02:00) [1]

Не используй ShowMessage.
Используй MessageBox(0,...<.code> .


BFG9k   (2005-10-28 19:01:00) [2]

Да, ошибку обнаружил, тема закрыта. Для последователей советую использовать OutputDebugString (дебагер не всегда работает корректно).


Leonid Troyanovsky   (2005-10-28 18:55:00) [3]


> BFG9k ©   (28.10.05 18:50) [2]
> Форма главная. Установил, что ShowMessage в OnDestroy ВООБЩЕ
> не работает. То есть туда попадает, но сообщение не выскакивает.


Т.е., собс-но, куда надо ты попал.

--
Regards, LVT.


Джо   (2005-10-28 18:53:00) [4]


> [2] BFG9k ©   (28.10.05 18:50)

По идее, оно должно "выскакивать", но тут же сниматься. Впрочем, сейчас нет времени проверить.


BFG9k   (2005-10-28 18:50:00) [5]

Форма главная. Установил, что ShowMessage в OnDestroy ВООБЩЕ не работает. То есть туда попадает, но сообщение не выскакивает.


Leonid Troyanovsky   (2005-10-28 18:48:00) [6]


> BFG9k ©   (28.10.05 18:37)  

> procedure TForm1.OnClose(Sender: TObject; var Action: TCloseAction);
> begin
>   ShowMessage('CLOSE');
> end;

> Результат работы программы : вылезает сообщение CLOSE и
> далее происходит ошибка. Вопрос : где она может произойти
> в таком случае ?


Она происходит после OnClose. Но, очевидно, до OnDestroy.

Если б это была не главная форма, то путей после OnClose
было б еще больше (т.е., не все так уж и плохо).

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо