|
|
|
Kirgston |
|
|||
Опытный Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Всем доброго времени суток. Вот собственно что то до конца не понимаю... создаю форму так:
Application->CreateForm(__classid(TForm2), &Form2); Когда моя форма отработала (ту какую я динамически создал) я делаю Form2->Free(); в итоге получаю ошибку Аксесс Виолейшен и форма не очищается из памяти а дальше там висит (ну если я правильно понял). Как правильно "удалять" форму? Под словами динамическое создание имел ввиду то что форму создаю не при старте программы а в нужный мне момент. Спасибо! |
|||
|
||||
pdbq |
|
|||
Новичок Профиль Группа: Участник Сообщений: 12 Регистрация: 15.5.2008 Репутация: нет Всего: нет |
возможно я не прав но попробуйте так:
|
|||
|
||||
586 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
||||
|
||||
vikaz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
а в чем фишка создания формы таким образом? Почему не:
-------------------- Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
Kirgston |
|
|||
Опытный Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
||||
|
||||
vikaz |
|
|||
Опытный Профиль Группа: Участник Сообщений: 869 Регистрация: 15.2.2006 Репутация: 10 Всего: 12 |
Так и будет! Так как данная строчка не создает глобальный указатель Form2. Я выходил из этого, передавая нужные мне указатели. Добавлено через 47 секунд или просто переписать вот так:
-------------------- Нет ничего настолько исправного, чтобы в нем не было ошибок. /Ф. Петрарка/ |
|||
|
||||
Kirgston |
|
|||
Опытный Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Хмм... кстати вот вопросик про ту же динамическую форму... вот когда я делаю ShowModal() и открываю модально нужную мне форму. В делфях чтобы выйти из модальной формы я писал Close; Форма сразу закрывалась и управление переходило на строчку ниже после вызова модальной формы. Здесь же не так... да ладно поставил return; но чувствую что это как то нелепо...
|
|||
|
||||
SVN74 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 740 Регистрация: 5.5.2008 Где: Комсомольск на Дн епре Репутация: 11 Всего: 18 |
Проверьте правильность включений #include - видят ли все друг друга.
Создавать форму можно - Application->CreateForm(__classid(TForm2), &Form2); В обработчике Form2 (OnClose) напишите Action = caFree; - (Но после этого уже Form2 не будет доступна, поэтому необходимо будет заново создавать форму). Закрывать форму можно Form2->Close(); ------------------------------------------------------- Подумайте, нужно ли вам все время очищать память, если Form2 будет вам нужна несколько раз? Указатель на Form2 - обязательно должен быть виден всей главной форме. |
|||
|
||||
586 |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2243 Регистрация: 8.5.2006 Репутация: 57 Всего: 146 |
Чтобы закрыть модальный диалог, измени свойство ModalResult:
ShowModal() возвратит значение mrOk. Это сообщение отредактировал(а) 586 - 8.1.2010, 14:33 |
|||
|
||||
Kirgston |
|
|||
Опытный Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Странно чуток... static const ShortInt mrOk = 0x1; я делал модал резалт не mrOk , а просто 1 (забыл просто про mrOk). В итоге управление не передавалось в место откуда была вызвана модальная форма (конечно вызвана была из другой формы). А кода дальше исполнялся. Может я просто забыл мат часть и всё так и должно быть... а может и очередной баг Билдера 2010 Охххх благодарю!!! Совсем забыл о caFree
Хм... не знаю сколько раз нужна... но думаю нормальный пользователь запустит её ну 1, ну 2 раза и всё =). К тому же на формочке не мало компонентов. Это что то типа авто обновления. Тот же Indy TCP Client, полосочки всякие, списки и т.д. И в принципе оно не мало жрет оперативки... если скажем там 4 списочка ( ListBox ) и в каждом по 9к записей))))) (меня не бить, сделал я нормально. Бить разрабов игры для какой я делаю авто обновление ). То есть это где то под 1-2 мб оперативки. На скорость я не думаю что будет сильно влиять (спешить то некуда). |
|||
|
||||
Kirgston |
|
|||
Опытный Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Опять не пойму... сделал вот так:
После того как происходить Форм Клоус, форм дестрой код в таймере дальше продолжает исполнятся... |
|||
|
||||
mrbrooks |
|
|||
трололомен Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
Kirgston, могу посоветовать:
1. Отказаться от событий OnCreate/OnDestroy. На каком основании - смотри в хелпе или в этой ветке форума. Вопрос обсуждался. Замени соответственно на конструктор формы - где выделяешь память, тот же OnClose - для высвобождения. 2. Работу с сервером вынеси в отдельный класс. |
|||
|
||||
Kirgston |
|
|||
Опытный Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Если не сложно скажите как приблизительно называлась тема? Перерыл 2 страницы нашел только 1 тему про форму и то не ту. |
|||
|
||||
mrbrooks |
|
|||
трололомен Профиль Группа: Завсегдатай Сообщений: 4259 Регистрация: 4.10.2006 Где: Дол Гулдур Репутация: 167 Всего: 306 |
сказать не могу, ибо не помню. по большому счету там была ссылка из хелпа камрад:
|
|||
|
||||
Kirgston |
|
|||
Опытный Профиль Группа: Участник Сообщений: 792 Регистрация: 24.12.2007 Репутация: 2 Всего: 2 |
Кстати опять таки... сделал класс. Сделал свой конструктор + деструктор. Может я просто не так понимаю как оно должно работать... но...
Идет код, выскочила ошибка. Я вызываю деструктор класса и ожидаю что класс удалится и код в вызваной из этого класса ф-ции не будет дальше исполнятся. Но видать я думаю не так как надо Мне тогда что писать какие то переменные типа mayterminate и проверять их мол надо ли сделать сейчас return и выйти из ф-ции класса или продолжать код? А на выходе из класса уже ставить деструкторы? |
|||
|
||||
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |