![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Application.Terminate [D2005, XP]
Dmitry_177 © (2007-04-25 08:41:00)При выполнении Application.Terminate выполняется ли Form.Destroy?
Игорь Шевченко (2007-04-26 16:07:00) [1]Если был вызов Application.CreateForm, то форма будет создана с Owner=Application, а при уничтожении Application, он, как всякий порядочный компонент, уничтожает своих детей, при этом и вызовется Form.Destroy.
Разумеется, Form.Destroy вызывается при Application.Free
ANB (2007-04-26 16:05:00) [2]
> Form.Destroy не сработает при Application.Terminate, а там
> у меня идет освобождение памяти и т.д..
Если процесс завершается, то винда сама удалит адресное пространство и все почистит.
Сергей М. (2007-04-26 16:02:00) [3]
> Dmitry_177 (26.04.07 15:57) [10]
Вот тебе цитата из forms.pas (D7):
procedure TApplication.Terminate;
begin
if CallTerminateProcs then PostQuitMessage(0);
end;
Где ты здесь видишь Destroy ?
Сергей М. (2007-04-26 15:59:00) [4]
> Dmitry_177 (26.04.07 15:44) [7]
> т.к. судя по
Когда исходники-то борландовские читать будем ?
Сергей М. (2007-04-26 15:59:00) [5]
> Dmitry_177 (26.04.07 15:57) [10]
>
> При Application.Terminate; всетаки вызывается Form.Destroy
Нет, не вызывается.
Dmitry_177 (2007-04-26 15:57:00) [6]При Application.Terminate; всетаки вызывается Form.Destroy.. В Form.Destroy сделал в качестве теста MessageBox и он выскочил при Application.Terminate; без Form1.Close;
McSimm_ (2007-04-26 15:53:00) [7]Возможно поможет PostQuitMessage
Kolan (2007-04-26 15:47:00) [8]> У меня в Form.Create считываются всякие настройки, для них
> выделяется память и т.д. и если при считывании произошла
> какая-то ошибка,
То надо сообщать об этом и применять настройки по умолчанию, имхо.
Dmitry_177 (2007-04-26 15:44:00) [9]Я сделал так:
Form1.Close;
Application.Terminate;
т.к. судя по:
> Dmitry_177 (25.04.07 08:41)
> При выполнении Application.Terminate выполняется ли Form.
> Destroy?
>
> Сергей М. © (25.04.07 08:52) [1]
> Нет.
Form.Destroy не сработает при Application.Terminate, а там у меня идет освобождение памяти и т.д..
Сергей М. (2007-04-26 15:40:00) [10]
> Dmitry_177 (26.04.07 15:38) [5]
Ну замени Close на Application.Terminate)
Вот ведь велика проблема-то !)
Dmitry_177 (2007-04-26 15:38:00) [11]Сергей М.
если так сделать, то окно при ошибке не показывается, но программа всеравно остается запущенной..
Сергей М. (2007-04-25 09:11:00) [12]Application.Initialize;
Application.ShowMainForm := False;
Application.CreateForm(TForm1, Form1);
Application.Run;
..
procedure TForm1.Create;
begin
...
if Условие then
Visible := True
else
Close;
end;
Dmitry_177 (2007-04-25 09:05:00) [13]У меня в Form.Create считываются всякие настройки, для них выделяется память и т.д. и если при считывании произошла какая-то ошибка, как мне в Form.Create правильно завершить программу? Я делаю так:
Application.Terminate;
Exit;
приложение завершается, но у меня окно быстро появляется и исчезает сразуже.. может как то по другому надо?
homm (2007-04-25 08:54:00) [14]> При выполнении Application.Terminate выполняется ли Form.Destroy?
что, проверить то самому слабо за минуту? Проще ждать когда здесь ответят.
Сергей М. (2007-04-25 08:52:00) [15]Нет.