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

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

Выйти из программы после создания главной формы перед ее показом


Tack ©   (2007-09-07 23:12:00) 

Какой самый корректный способ выйти из программы послесоздания главной формы (чтобы вызвалось событие OnCreate), но передтем, как форма будет отображена на экране/таскбаре?
Чтобы она вообще даже на миллисекунду не промелькнула (а то бы я послал сам себе WM_CLOSE и все).

Причина: после создания главной формы проверяются параметры командной строки и возможен выход после их проверки. Хочу сделать, не модифицируя код в dpr-файле.


Anatoly Podgoretsky   (2007-09-08 20:15:00) [1]

А я надеялся запутать, но вас не пробьешь.


DVM   (2007-09-08 20:13:00) [2]


> Не надо создавать, если показ не предусмотрен, надо сначала
> решить этот вопрос и если потребуется, то тогда создавать
> и показывать.

Ну так я об этом же и говорю. Не надо создавать, автор же не хочет показывать окно вообще в ряде случаев. Если в обработчике OnCreate проверять - это значит уже создать в любом случае. Потому я и говорю, лучше код проверки поместить в dpr файл или перед тем местом, где создается объект формы.


Anatoly Podgoretsky   (2007-09-08 20:06:00) [3]

> DVM  (08.09.2007 19:34:09)  [9]

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

То есть создание и уничтожения в данном случае не важные детали.


DVM   (2007-09-08 19:34:00) [4]


> Anatoly Podgoretsky ©   (08.09.07 13:05) [7]
> > DVM  (07.09.2007 23:27:02)  [2]
>
> Неправильная мотивация!
>
> Зачем создавать окно, если оно не будет показано.
> Да и думаю не об окнах речь, а о формах.
> Разница между ними огромная.

Разница то огромная, но дело не в этом. Глупо создавать объект формы, потом в его OnCreate проверять, а нужно ли было его вообще создавать, а потом если не нужно уничтожать.


{RASkov}   (2007-09-08 16:02:00) [5]

> [6] Германн ©   (08.09.07 12:40)

?
Человек не хочет выполнять условие

> Зачем создавать окно, если оно не будет показано.

, боится править dpr.... что еще можно посоветовать...


> Tack

Вынеси в отдельную процедуру "проверки"(или как там) нужна ли дальнейшая работа программы, и сделай в dpr нечто так:

program Project;
.....
begin
 if VerifingRunApp then begin
  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
 end else Показать сообщение и закрыться; //Например: ShowMessage('По такой то причине не могу работать');
end.


Только учти что в VerifingRunApp у тебя нет доступа к полям и методам формы MainForm....
В общем тут в одном посте тебе все тонкости не расскажешь.... так, что пробуй... если что не получится спрашивай...


Anatoly Podgoretsky   (2007-09-08 13:05:00) [6]

> DVM  (07.09.2007 23:27:02)  [2]

Неправильная мотивация!

Зачем создавать окно, если оно не будет показано.
Да и думаю не об окнах речь, а о формах.
Разница между ними огромная.


Германн   (2007-09-08 12:40:00) [7]


> {RASkov} ©   (08.09.07 11:46) [5]
>
> halt
>

"Привыкли руки к топорам." (с)


{RASkov}   (2007-09-08 11:46:00) [8]

halt


DVM   (2007-09-07 23:40:00) [9]


> Честно говоря, боюсь его как огня теперь.

Ты его не бойся, он не страшный. Кучу всего туды писать конечно не следует, но необходимые вещи - пожалуйста. К тому же можно и резервную копию сохранить, или потом в случае чего поправить файл этот в обычном блокноте.


Tack   (2007-09-07 23:36:00) [10]

> [1] DVM ©   (07.09.07 23:22)
> А dpr файл модифицировать религия не позволяет?

Честно говоря, боюсь его как огня теперь. Один раз написал туда кучу кода и не смог загрузить потом проект на Delphi7. Просто среда вылетала с какой-то ошибкой без описания при загрузке проекта и все. Пока я додумался, что дело было в нелогичной (с точки зрения delphi) структуры dpr-файла, ушло 4 дня.
(прошу не глумиться над дураком)
:)

Спасибо за Application.ShowMainForm, никогда раньше не пользовался.


DVM   (2007-09-07 23:27:00) [11]

добавь в модуль формы внизу:

initialization

if (условие) then
 application.ShowMainForm := false
else
 application.ShowMainForm := true;

только лучше править dpr ибо все остальное - изврат, так и знай. Зачем создавать окно, если оно будет потом уничтожено.


DVM   (2007-09-07 23:22:00) [12]


> Хочу сделать, не модифицируя код в dpr-файле.

А dpr файл модифицировать религия не позволяет?


Наверх

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