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

Вниз

Не срабатывает OnClose. Правильно ли это ?   Найти похожие ветки 

 
half_litre   (2004-06-30 15:16) [0]

В MainForm создаю :
var f    : TSomeForm;

 f:=TSomeForm.Create(Application);
 with TfrmSqlForm(f) do begin
    ....
    Show
 end;
.........
Если в теле TSomeForm делаю Close,TSomeForm.OnClose
срабатывает. Но если закрываю MainForm (Close) то
TSomeForm.OnClose не срабатывает, только OnDestroy.
Нормально ли это ?
(TSomeForm.FormStyle=fsNormal)


 
Iconka   (2004-06-30 15:30) [1]

Попробуй f:=TSomeForm.Create(Self);


 
half_litre   (2004-06-30 15:34) [2]

Увы, тоже самое


 
Sandman25 ©   (2004-06-30 15:35) [3]

OnClose не срабатывает в ряде случаев (при программной перезагрузке, например). OnCloseQuery срабатывает.


 
Iconka   (2004-06-30 15:36) [4]

Тогда забей на это и перенеси тело функции OnClose в OnDestroy.


 
half_litre   (2004-06-30 15:38) [5]

Забить то можно, но хочется понять причину сего.


 
Iconka   (2004-06-30 15:43) [6]

Тогда поставь точки останова и по F8-F7 пройдись по функциям.


 
half_litre   (2004-06-30 15:45) [7]

Дык ф-ий то : в MainForm только Close и ...... и все !!!


 
Iconka   (2004-06-30 15:46) [8]

вот и мотри внутриности TForm.Close и прочии побочные...


 
half_litre   (2004-06-30 16:15) [9]

Нашел в Forms.pas :

procedure TCustomForm.Close;
.........
if Application.MainForm = Self then Application.Terminate
......
а при Application.Terminate, я слышал, OnClose не срабатывает.
Получается я сам должен вести список созданных мною окон и
по MainForm.OnClose сам по списку их закрывать.

Может кто знает менее геморойный способ ?


 
half_litre   (2004-06-30 16:27) [10]

Если кому интересно.
на MainForm.OnClose :

 for i:=0 to Screen.CustomFormCount - 1 do
    if Screen.CustomForms[i].Handle<>self.Handle
        then Screen.CustomForms[i].Close


 
half_litre   (2004-06-30 16:29) [11]

А вообще это МАРАЗМ. Я был сильно удивлен такой бяке в Delphi


 
MacroDenS ©   (2004-06-30 16:45) [12]


Получается я сам должен вести список созданных мною окон и
по MainForm.OnClose сам по списку их закрывать.


А вообще при закрытии главной формы вызывается событие OnDestroy для всех компонентов (и форм в том числе), так, что клоузить все формы необязательно.


 
half_litre   (2004-06-30 16:53) [13]

Мне это важно было :
В TSomeForm.OnClose я делал FreeLibrary(someDll)
Если это же делать по Destroy, то по закрытию приложения
RunTime Error


 
MacroDenS ©   (2004-06-30 16:58) [14]

А если делать FreeLibrary(someDll) в OnClose главной формы?


 
half_litre   (2004-06-30 17:03) [15]

Главная о someDll не в курсах :))

И вот интересно почему на OnClose FreeLibrary - OK
а на OnDestroy RunTime Error


 
MacroDenS ©   (2004-06-30 17:08) [16]


Главная о someDll не в курсах :))

Укажи в юзесах модуль той формы, где про someDll пишеться.

И вот интересно почему на OnClose FreeLibrary - OK
а на OnDestroy RunTime Error

потому-что дестрой дочерних форм и компонентов происходит раньше, чем наступает событие дестрой главной формы



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

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

Наверх




Память: 0.47 MB
Время: 0.037 c
11-1076525592
KreZ0n
2004-02-11 21:53
2004.07.11
Второе окно в KOL


3-1087386461
nstur
2004-06-16 15:47
2004.07.11
Запрос с использованием *.DB


14-1087808659
_student
2004-06-21 13:04
2004.07.11
С помощью Asembler надо вытащить системную дату


4-1085406294
menart
2004-05-24 17:44
2004.07.11
Проверка подлиности пароля и имя пользователя в домене!


4-1085833368
Grinder
2004-05-29 16:22
2004.07.11
Как запретить выключение Windows НЕ используя CloseQuery?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский