![]() |
|
|
![]()
|
|
| Sergio |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Здраствуйте. Я хочу сделать форму(динамически) и на ней чтобы была кнопка при нажатии которой окно (this)закрывалось. Эта тема уже поднималась но без использования классов. Вот мой код:
И еще:
Клмпилируется но не роботает... |
||||
|
|||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
окромя как с классами она не поднималась... в чем это выражается? потому как все тут работает... если хочеш чтобы форма сразу после показа не пропадала -- используй ShowModal() вместо Show()... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Может и работает, но вот этот участок кода мне не понятен:
Т.е., если у кнопки есть обработчик - то закрываем, а если нет - то не закрываем? Добавлено @ 17:29 Если не касаться того, что эта тема обсуждалась буквально на днях, то сам подход мне видится как крайне мудреный. |
|||
|
||||
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Anikmar, вот с этим участком и проблема
|
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Вот в этом посте это обсуждалось достаточно подробно
Добавлено @ 17:36 А что вы этой проверкой хотели узнать? Нажималась ли кнопка? |
|||
|
||||
| _hunter |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 8564 Регистрация: 24.6.2003 Где: Europe::Ukraine:: Kiev Репутация: 24 Всего: 98 |
так она и не должна (по этому коду) закрывать нужно в обработчике... -------------------- Tempora mutantur, et nos mutamur in illis... |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
сорри.
Это сообщение отредактировал(а) codelord - 17.1.2007, 17:45 |
|||
|
||||
| Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: 1 Всего: 1 |
Я хотел, чтобы при нажатии кнопки окно(PrivForm) закрывалось удалялось из памяти
|
|||
|
||||
| Anikmar |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
А зачем оборачивать в свой класс? Нечто подобное недавно уже было. Повторяемс: 1. Создаем форму - такую, какую надо. Со всеми нужными контролами и обработчиками. В том числе с вожделенной кнопкой "Закрыть" в обработчике которой стоит команда Close(); 2. В опциях проекта убираем эту форму из раздело AutoCreate в раздел Available 3. В нужном месте программы создаем эту форму при помощи оператора new
Возможные варианты: Перехватываем событие OnClose в форме и пишем туда строку: Action = caFree; Тогда delete не нужен - форма при закрытии уничтожит себя сама. Полезно для вариантов немодальных форм. При таком подходе не надо ничего наворачивать, создавать контролы, размещать их на форме и т.п, |
||||
|
|||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Небольшая поправочка. Если форма удаляется с помощью delete, то передавать в коструктор можно педедать NULL. Владельца нужно передавать, когда предполагается,что за удаление формы будет отвечать владелец. С учетом всего сказанного, а также испольуюя STL, все укладывается в одну строчу
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 34 Всего: 59 |
Частично с этим согласен. Особенно в случае с модальной формой. auto_ptr лично я недолюбливаю. Расслабляет несколько - привык убирать за собой сам. А по поводу передачи NULL - это, конечно можно. Но при таком подходе при закрытиb приложения по alt+F4 или извне подчиненная форма не получает сообщения о закрытии - и может оставить некоторые действия незавершенными, которые подразумевалось выполнить. Я конкретно не проверял, но мне кажется, что деструктор формы вызовется уже после уничтожения главной формы, а это не всегда полезно. Будет время проведу эксперимент. Лично я пользуюсь перехватом OnClose и значением Action caFree. |
|||
|
||||
![]()
|
| Правила форума "С++ 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. |