![]() |
|
|
![]()
|
|
| sergey_85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: 1 Всего: 1 |
Привет!
Есть 2 формы в коде 1 формы динамически создаётся 2 и открывается:
Так вот, в событии OnCreate 2 формы происходит кое-какая проверка и если она завершается неудачей (например нет файла) то форма не должна старовать т.е. она и не нужна больше. Для этого делаю вызов в событии OnCreate this->Close(); но ничего не происходит, форма открывается. -------------------- A good design always pays off. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Масло маслянное имхо. Не проще ли проверять условие до создания формы? И уже по результатам - создовать или нет.
|
|||
|
||||
| sergey_85 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 445 Регистрация: 17.4.2007 Где: Россия, Челябинск Репутация: 1 Всего: 1 |
Да думаю так и сделаю - другого выбора нет!
А всё-таки, как убить форму в событии OnCreate OnShow? -------------------- A good design always pays off. |
|||
|
||||
| mrbrooks |
|
|||
![]() трололомен ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Убивать форму при создании? |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 13 Всего: 116 |
||||
|
||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
delete this;
|
|||
|
||||
| 586 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
Да. Любители мелькать формами. Создай метод, который будет вызываться перед ShowModal, или перегрузи метод ShowModal (он кстати виртуальный)
|
|||
|
||||
| Vyacheslav |
|
||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Итак. Запомните раз и навсегда, что С++Builder - это С++, а не Delphi и соответственно пользоваться событиями OnCreate и OnDestroy - это моветон. Они просто унаследованы из Delphi для совместимости. Вместо них в С++ нужно использовать конструкторы и деструкторы. Причем эти рекомендации ясно прописаны в хелпе по событиям OnCreate и OnDestroy, но почему- то все упорно продолжают запихивать в OnCreate и OnDestroy код, которому самое место в конструкторе и деструкторе А что в таких случаях делают в С++, если на момент создания стало ясно, что объект не нужен? Единственный и стандартный способ - это сгенерить исключение Мой код бы выглядел в этом случае так
А с учетом , что я вообще стараюсь перехватывать все исключения централизовано, используя ApplicationEvent и при использовании stl весь код превращается в
-------------------- С уважением, Вячеслав Ермолаев |
||||||
|
|||||||
| HappyLife |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 642 Регистрация: 17.5.2006 Репутация: 4 Всего: 8 |
Vyacheslav,
Моветон не моветон, однако есть два момента на мой взгляд несказанные Вами. 1. При двойном клике по форме, увы и ах IDE предлагает работать именно с OnCreate и ни с чем больше. Что и заставляет начинающих использовать именно его. 2. Является существенным плюсом, что есть такое событие как OnDestroy. Правда у меня, скажу честно не разу не возникло необходимости этим плюсом воспользоваться. Может быть оно и к лучшему. А плюс в том, что мы можем ВНЕ формы определить некие операции при её удалении.
Это сообщение отредактировал(а) HappyLife - 19.8.2008, 16:05 |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |