Главная страница
    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.093 c
1-1088354677
DeepProg
2004-06-27 20:44
2004.07.11
TStringGrid OnDrawCell неверное размещение текста


1-1088357174
Sphinx
2004-06-27 21:26
2004.07.11
Объеденение текста в RichEdit


1-1088358290
Dio
2004-06-27 21:44
2004.07.11
передача числовых значений из DLL


3-1087307503
denis24
2004-06-15 17:51
2004.07.11
Внешнее обьединение с несколькими таблицами


14-1088085715
miwa
2004-06-24 18:01
2004.07.11
Посоветуйте хорошую литературу по CISCO





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