![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Выйти из программы после создания главной формы перед ее показом
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 файл модифицировать религия не позволяет?