Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В OnCreate формы запретить отображение этой формы 
:(
    Опции темы
Delphist
Дата 5.6.2006, 11:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



В OnCreate формы происходит не которые вычисдения, если в ходе вычислений возникает ошибка, то необходимо запретить отображение и существование этой формы.
Я в OnCreate делал self.Free это приводит к ошибке. 


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
_hunter
Дата 5.6.2006, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



а не нада OnCreate менять свойства видимости...
проще исключение кинуть 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Delphist
Дата 5.6.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphist Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2145
Регистрация: 3.2.2004
Где: всегда в сети

Репутация: 2
Всего: 3



Цитата(_hunter @ 5.6.2006,  11:36)
а не нада OnCreate менять свойства видимости...
проще исключение кинуть

В смысле Abort что ли? 


--------------------
ProcessInfo 1-ая моя программа (аналог spyxx.exe с гораздо большим функц-ом - внедрение dll в адр. простр. процесса, перехват API-функций, разбор приложения на окна мн.др).
Когда-то давным-давно использовал это...
PM MAIL ICQ   Вверх
Sunr1se
Дата 5.6.2006, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 1.5.2006

Репутация: 6
Всего: 13



А не проще создать таймер с interval=1 и в событии OnTimer прописать Form2.Free? А таймер включать в том случае, если в ходе вычислений возникла ошибка. 
--------------------
IRC-канал Винграда 
PM MAIL ICQ   Вверх
_hunter
Дата 5.6.2006, 11:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



Цитата(Delphist @  5.6.2006,  11:40 Найти цитируемый пост)
В смысле Abort что ли? 

в смысле throw (или rise -- точно не помню) 


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
BinaryEvil
Дата 5.6.2006, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 4.3.2006

Репутация: -1
Всего: 2



raise

Добавлено @ 12:02 
self.free нинада, лучше exitproccess(0) 
PM MAIL   Вверх
Romikgy
Дата 5.6.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 26
Всего: 146



А смысл тогда форму создавать, легче имхо этого не допустить 
Код

Application.Initialize;
// здесь создай условие и уходи  от создания
if ShowMyForm=true then
begin
Application.CreateForm(TForm1, Form1);
  Application.Run;
end;
 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
jaAlex
Дата 5.6.2006, 23:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 31.5.2006
Где: Краснодар

Репутация: нет
Всего: нет



Цитата(Delphist @ 5.6.2006,  11:33)
Запретить отображение и существование этой формы.

Запретить отображение: Form1.Hide; 
Запретить существование: Form1.Free;
Если я правильно тебя понял, то это делается так. 
PM MAIL   Вверх
Mechanic
Дата 6.6.2006, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

Репутация: 6
Всего: 7



А я просто пишу

Код

if SomeCondition then Close;


 smile  
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
BinaryEvil
Дата 6.6.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 4.3.2006

Репутация: -1
Всего: 2



Mechanic, никатит, онкриэйт вызывается до обработки онкриэйт предка, ещё формы по сути небуит, close выдаст те ошибку 
PM MAIL   Вверх
Mechanic
Дата 6.6.2006, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 228
Регистрация: 5.5.2006
Где: Kharkov, Ukraine

Репутация: 6
Всего: 7



Цитата(BinaryEvil @  6.6.2006,  23:19 Найти цитируемый пост)
Mechanic, никатит, онкриэйт вызывается до обработки онкриэйт предка, ещё формы по сути небуит, close выдаст те ошибку  

Упс, напутал чегой-то, наверное. Помню, что просто закрывалась.

Кстати, форма уже есть, когда OnCreate вызывается. И ошибки нет. Закрытия формы, правда, тоже нет.  smile

Добавлено @ 23:37 
Вспомнил. Евент ведь сперва должен отработать..
Код

PostMessage(Handle,WM_CLOSE,0,0);
 
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are..  ©Mch  
PM   Вверх
Poseidon
Дата 6.6.2006, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 53
Всего: 133



А если попробовать старый проверенный halt? Жестоко конечно, но можно (хотя лучше не нужно smile)
Самый правильный вариант у Romikgy


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
BinaryEvil
Дата 7.6.2006, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 4.3.2006

Репутация: -1
Всего: 2



Mechanic, звыняй, беру свои слова обратно.чёта напутол я.  
Delphist, так надо тока форму закрыть или сразу прогу? 
PM MAIL   Вверх
Sunvas
Дата 7.6.2006, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



Мдя.. А 
Код

application.showmainform:=false;

не пробовал? 


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
vv3
Дата 7.6.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 75
Регистрация: 29.4.2006

Репутация: нет
Всего: нет



Действительно, зачем создавать форму, если при некоторых условиях ее нужно уничтожать. Romikgy прав на 100%. И не Form1.Free, а Form1.Release (Borland советует именно так). 
А дальше в коде что происходит при обращении к форме, которая не существует?
В общем, если уже так приспичило именно в onCreate ее же и убить, то  так:
Код
procedure TForm1.FormCreate(Sender: TObject);
begin
//....наши условия
TForm1(Sender).Release;
Sender:= nil; //Чтобы потом по тексту сработало, например: 
                     //if not Assigned(Form1) then 
                    // ShowMessage('Invalid user. Replace and strike any key when ready')
                    //   else Form1.Show;
end;

Причем, если таким образом убить главную форму приложения, то само приложение останется висеть в памяти, но уже без формы.  

Это сообщение отредактировал(а) vv3 - 7.6.2006, 09:58
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.