Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];

Вниз

событие OnClose не выполняется   Найти похожие ветки 

 
Валерий   (2003-01-21 06:44) [0]

Почему не происходит событие OnClose главной формы
программы-сервера при ее закрытии
в связи с закрытием программы-клиента в ActiveX-Приложениях?
Заранее всем благодарен!


 
Валерий   (2003-01-21 06:53) [1]

Уточнение!
Событие не происходит когда программа автоматически
закрывается после завершения работы программы-клиента!


 
Identifikator Borna   (2003-01-21 09:19) [2]

>> Валерий (21.01.03 06:53)
А как вы обрабатываете событие OnClose ?


 
Shodan   (2003-01-21 09:29) [3]

может нужно трабатывать событие OnCloseQuery


 
Валерий   (2003-01-21 10:44) [4]

Identifikator Borna
оно просто не происходит
в инспекторе создаю обработчик на событие OnClose у главной формы
Shodan
в этом случае оно тоже не происходит


 
Reindeer Moss Eater   (2003-01-21 10:49) [5]

OnClose генерится при вызове метода Close;
Нет вызова - нет события


 
Валерий   (2003-01-21 10:56) [6]

По событию OnClose сохраняются настройки программы.
В случае закрытия пользователем программы все события
происходят,но если закрывается последняя
программа-клиент,то в этом случае автоматически закрывается
программа-сервер и не вызывается событие OnClose.
происходят события onHide и onDestroy.


 
Reindeer Moss Eater   (2003-01-21 10:57) [7]

А где вопрос?


 
Валерий   (2003-01-21 11:02) [8]

Reindeer Moss Eater (21.01.03 10:57)
А где вопрос?

тогда вопрос почему не происходит Close?


 
Reindeer Moss Eater   (2003-01-21 11:03) [9]

Reindeer Moss Eater (21.01.03 10:49)


 
Валерий   (2003-01-21 11:08) [10]

Reindeer Moss Eater
Не понял ваш юмор!
Вопрос открытый!


 
Reindeer Moss Eater   (2003-01-21 11:18) [11]

Событие OnClose генерится при вызове метода Close;
Нет вызова метода (Close) - не будет и события (OnClose)



 
Karbazol   (2003-01-21 11:41) [12]

Хорошо. Событие OnClose генерится в методе Close.
Если метод Close не вызывается, то возникает закономерный вопрос.
Что происходит при закрытии ActiveX сервера типа CLSCTX_LOCAL_SERVER? Потому что отследить стек вызовов средствами Delphi не удалось.
Или, возможно, кто-то знает в каком направлении нужно копать.


 
Karbazol   (2003-01-21 13:58) [13]

В общем, если кому-то интересно.
В случае ActiveX сервера типа CLSCTX_LOCAL_SERVER событие OnClose главной формы не вызывается из-за того, что при уничтожении последнего объекта в очередь сообщений основного треда помещается WM_QUIT, а это сообщение до форм не доходит ;-) и, следовательно, никакие события не генерируются...

Решение:

.......
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure LastObjectRelease(var Shutdown: boolean);
end;

implementation

uses
..., ComServ,...

......
procedure TForm1.FormCreate(Sender: TObject);
begin
ComServer.OnLastRelease := LastObjectRelease;
end;
......

procedure TForm1.LastObjectRelease(var Shutdown: boolean);
begin
if Shutdown then
Close;
end;


 
REA   (2003-01-21 15:20) [14]

OnClose частенько не вызывается - например при завершении работы windows. Проще деструктор переписать или OnDestroy.


 
Валерий   (2003-01-22 04:16) [15]

Всем Спасибо!
to Karbazol
Большое спасибо!
Буду копать!



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.01.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
4-97103
omega33
2002-12-14 04:24
2003.01.30
перевести на delphi


7-97061
daan_m
2002-11-18 16:34
2003.01.30
Сервис


3-96635
Сергей
2003-01-02 16:47
2003.01.30
КомбоБокс в БД


1-96651
opoloXAI
2003-01-21 14:47
2003.01.30
TListView and Long-Long-Long Hint


3-96544
Andrey V.
2003-01-15 08:03
2003.01.30
ВОпрос по ЗАпросу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский