Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание и разрушение формы в процессе выполнения 
:(
    Опции темы
Нитонисе
Дата 1.4.2010, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



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

Можно конечно исключить формы из раздела Auto-create forms и по нажатию кнопки - создавать их
Код

Application->CreateForm(__classid(TFMyForm), &FMyForm);

Однако призакрытии этой формы кодом 
Код

FMyForm->Close();

Она остается в памяти и при нажатии кнопки на главной форме, запускающей данную, я так понимаю создастся дубликат формы FMyForm.

Как же сделать чтобы форма создавалсь, а по закрытию - разрушалась (выгружалась из памяти).

Это сообщение отредактировал(а) Нитонисе - 1.4.2010, 13:05
PM MAIL   Вверх
Alca
Дата 1.4.2010, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Код

    /*Модальную форму можно создать и удалить в той же области действия, 
    что гарантированно предотвратит утечку памяти. 
    Для этого форма не должна создаваться автоматически. 
    С этой целью необходимо удалить ее из списка AutoCreate Forms 
    вкладки Forms диалогового окна Project --> Options. 
    Затем из файла с расширением .cpp удаляется или комментируется строка:

    TFormX * FormX;
    а из файла с расширением .h удаляется или комментируется строка:

    extern PACKAGE TFormX * FormX;
    Для использования модальной формы создается следующая конструкция:*/

    #include <memory>

    std::auto_ptr<TFormX> apfrmForm(new TFormX(0/*this*/));
    /*debug*/assert(NULL != apfrmForm.get());

    int iRes = apfrmForm->ShowModal();
    switch (iRes) {
        case mrOk: 
            {
                ShowMessage(_T("mrOk"));
            }
            break;
        case mrCancel:    
            {
                ShowMessage(_T("mrCancel"));
            }
            break;
        //mrNone, mrOk, mrCancel, mrAbort, mrRetry, mrIgnore, mrYes, mrNo, mrAll, mrNoToAll, mrYesToAll
        default:
            {
                /*DEBUG*/assert(true);
            }
         break;
    }

 ???

Это сообщение отредактировал(а) Alca - 1.4.2010, 13:11


--------------------
PM WWW ICQ Skype Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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