Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Form.Close


Страницы:   1 2

ZX48 ©   (2006-08-14 17:39:00) 

GjПомите плиз. Не могу закрыть форму. В коде Form4.close, но не выполняется. В чем может быть проблема?


Anatoly Podgoretsky   (2006-08-14 19:28:00) [1]

при таком подходе не забудь убрать эту форму из списка Auto-Create

Этого недостаточно, надо еще убрать переменную формы, с этого и начать.


ZX48   (2006-08-14 19:10:00) [2]

Спасибо. Все получилось


StriderMan   (2006-08-14 18:26:00) [3]

сделай так:

procedure ShowForm4;
begin

 //тут сделай все проверки

 with TForm4.Create(nil) do
 try
   ShowModal;
 finally
   Free;
 end;
end;


при таком подходе не забудь убрать эту форму из списка Auto-Create
(Project-Options-Forms)


Loginov Dmitry   (2006-08-14 18:24:00) [4]

> хоть с помощью Halt.


А лучше так:

if ВсеНормально then
begin
 Application.Initialize;
 ...
 Application.Run;
end;


Loginov Dmitry   (2006-08-14 18:22:00) [5]

> Поподробнее можно? Как это будет работать.


В файле проекта *.dpr перед Application.Initialize выполняешь все необходимые проверки. И тама можешь выходить из программы как хочешь, хоть с помощью Halt.


ZX48   (2006-08-14 18:22:00) [6]

Хорошо! Всем спасибо! Буду выносить проверку в отдельный модуль.


StriderMan   (2006-08-14 18:20:00) [7]


> ZX48 ©   (14.08.06 18:17) [29]

в скобках указывается т.н. Owner. Чтоб понять для чего это нужно, лучше почитать книжки. в данном случае если создавать так, то можно не беспокоиться о разрушении объекта формы, Owner разрушит все сам когда разрушится. если ты указываешь nil, то сам должен побеспокоиться о разрушении созданного тобой объекта формы.


ZX48   (2006-08-14 18:17:00) [8]

3. Делай все проверки до создания формы, а форму создавай вручную
form4 = TForm4.Create(nil);

Поподробнее можно? Как это будет работать. Я думал form4:=tform4.Create(form0) должно быть?


StriderMan   (2006-08-14 18:16:00) [9]


> Loginov Dmitry ©   (14.08.06 18:15) [26]

да, пардон, с Abortэто я махнул не глядя


Loginov Dmitry   (2006-08-14 18:16:00) [10]

> 3. Делай все проверки до создания формы, а форму создавай
> вручную
> form4 = TForm4.Create(nil);


Лучше Application.CreateForm(),
иначе автор просто умрет отлавливать глюки с вездесущим form4.


Loginov Dmitry   (2006-08-14 18:15:00) [11]

> если ты уверен что закрытие будет производится из обработчика
> OnCreate или процедур, вызванных этим обработчиком, достаточно
> вызвать Abort, и форма не создастся.


Создастся


StriderMan   (2006-08-14 18:14:00) [12]

1. убери вездевнутри методов класса TForm4 обращение к переменной form4. Класс и так сам о себе все знает.
2. дело в том что у тебя действительно:

> ANB ©   (14.08.06 17:54) [11]
> Есть у меня подозрение, что все это в OnCreate вызывается.
>  Потому и не кусает :)


сделай вместо close Application.Terminate. (Мастера просьба не ругаться :))

если ты уверен что закрытие будет производится из обработчика OnCreate или процедур, вызванных этим обработчиком, достаточно вызвать Abort, и форма не создастся.

3. Делай все проверки до создания формы, а форму создавай вручную
form4 = TForm4.Create(nil);


Loginov Dmitry   (2006-08-14 18:14:00) [13]

> Да уж...Как-то некрасиво получается...


Что получается некрасиво?


ZX48   (2006-08-14 18:11:00) [14]

Loginov Dmitry ©   (14.08.06 18:08) [22]
Попробуй вместо Close
Application.Terminate

Да уж...Как-то некрасиво получается...


Loginov Dmitry   (2006-08-14 18:08:00) [15]

Попробуй вместо Close
Application.Terminate


ZX48   (2006-08-14 18:08:00) [16]

Что тогда предлагаете? Отдельный модуль и не морочиться?


Плохиш   (2006-08-14 18:08:00) [17]


> объект Form4 еще не создан

Form4 - это не объект.


tesseract   (2006-08-14 18:07:00) [18]


> ZX48 ©   (14.08.06 18:06) [17]


Создан-то он создан, но вызывать close или hide из OnCreate и OnShow категорически запрещается в справке.


> Т.е. создать отдельный модуль и потом из него вызывать основную
> форму?


да это можно сделать в *.dpr  project -> View Source


Loginov Dmitry   (2006-08-14 18:07:00) [19]

> Я так понял что не работает закрытие потому что объект Form4
> еще не создан?


Если бы это было так, то ты бы ловил AV каждые надцать секунд.


ZX48   (2006-08-14 18:06:00) [20]

>>MessageDlg вообще показывается?

Да. Все отрабатывается. Я так понял что не работает закрытие потому что объект Form4 еще не создан?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо