Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.07;
Скачать: CL | DM;

Вниз

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

 
Tack ©   (2007-09-07 23:12) [0]

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

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


 
DVM ©   (2007-09-07 23:22) [1]


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

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


 
DVM ©   (2007-09-07 23:27) [2]

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

initialization

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

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


 
Tack ©   (2007-09-07 23:36) [3]

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

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

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


 
DVM ©   (2007-09-07 23:40) [4]


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

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


 
{RASkov} ©   (2007-09-08 11:46) [5]

halt


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


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

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


 
Anatoly Podgoretsky ©   (2007-09-08 13:05) [7]

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

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

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


 
{RASkov} ©   (2007-09-08 16:02) [8]

> [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....
В общем тут в одном посте тебе все тонкости не расскажешь.... так, что пробуй... если что не получится спрашивай...


 
DVM ©   (2007-09-08 19:34) [9]


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

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


 
Anatoly Podgoretsky ©   (2007-09-08 20:06) [10]

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

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

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


 
DVM ©   (2007-09-08 20:13) [11]


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

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


 
Anatoly Podgoretsky ©   (2007-09-08 20:15) [12]

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



Страницы: 1 вся ветка

Текущий архив: 2007.10.07;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.027 c
6-1170410970
DillerXX
2007-02-02 13:09
2007.10.07
TUN/TAP


8-1167315725
KOSS
2006-12-28 17:22
2007.10.07
JPEG to BMP


15-1189356433
Beastie Boys
2007-09-09 20:47
2007.10.07
про выделенный сервер


3-1180375402
Kripton
2007-05-28 22:03
2007.10.07
RadioGroup и БД


2-1189325518
qaaqw
2007-09-09 12:11
2007.10.07
Расположение класса в модуле.