Форум: "Основная";
Текущий архив: 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