![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Sur0vy |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.10.2009 Репутация: нет Всего: нет |
Задача стоит так: есть Frame, на нем панель, на панели кнопка. при нажатии на эту кнопку фрейм нужно уничтожить вместе со всем содержимым.
пробовал вот так Вот немного кода
и вроде удаляется нормально, но вот когда новый фрейм добавляешь, то возникает ошибка
подскажите как его удалить все-таки |
||||
|
|||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
Free ему сделай. И если будут проблемы при выходе из программы то создавай так
Frm:= TMyFrame.create(nil); -------------------- Обижено школьников: 8 |
|||
|
||||
| Sur0vy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.10.2009 Репутация: нет Всего: нет |
free выдает Access violation
|
|||
|
||||
| AndreyIQ |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: нет Всего: 8 |
У Вас повидимому, либо действительно не удаляется фрейм, либо пытаетесь создать с тем же именем новый фрейм.
Без проблем создает форму с кнопкой и удаляет по нажатию на кнопку. |
||||||
|
|||||||
| Sur0vy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.10.2009 Репутация: нет Всего: нет |
Да, я действительно пытаюсь создать фрейм с тем-же именем. Но тогда мне непонятно, ведь объект уже уничтожен, почему нельзя его имя использовать?
|
|||
|
||||
| AndreyIQ |
|
||||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: нет Всего: 8 |
Значить он не уничтожен. В приведеном Вами коде, нет удаления.
Вообще не очень понятно, что в этом участке кода происходит. Если я все правильно понял, должно быть
Или что-то вроде этого. |
||||||
|
|||||||
| Sur0vy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.10.2009 Репутация: нет Всего: нет |
в том то и дело, что просто free выдает Access violation, потому как мы пытаемся удалить объект из самого себя
Добавлено через 6 минут и 23 секунды да, и еще вот этот код
заканчивается ошибкой Abstract Error |
|||
|
||||
| AndreyIQ |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: нет Всего: 8 |
Страно, у меня без проблем работает, а какая у Вас версия Delphi? |
||||
|
|||||
| Sur0vy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.10.2009 Репутация: нет Всего: нет |
7-ка
|
|||
|
||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
100 раз уже обсуждалась эта тема. Из самого себя (и из своих детей) нельзя уничтожать себя же. Нужны небольшие извращения, и для этого нужно внести дополнения в код родителя фрейма.
Подробности - здесь |
|||
|
||||
| AndreyIQ |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: нет Всего: 8 |
А почему тогда у меня без проблем работает след. код:
|
||||
|
|||||
| kami |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1806 Регистрация: 25.8.2007 Где: Санкт-Петербург Репутация: 23 Всего: 72 |
А потому что не нужно путать фреймы с формами. Форма "заточена" под уничтожение "из себя".
Это раз. Второе - не нужно исходить из частных случаев. Программист обязан предусмотреть все (или хотя бы большинство) граблей, которые могут возникнуть на этапе расширения проекта. Положите на свою динамически созданную форму в дополнение к кнопке еще TImage и получите AbstractError. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 31 Всего: 88 |
вообще-то там метод Release специально для этого, а заточки какой-то нет особой. А на тему "почему работает", то вот тут я объяснял почему может работать, и почему не стоит на это расчитывать -------------------- Обижено школьников: 8 |
|||
|
||||
| AndreyIQ |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 185 Регистрация: 5.2.2007 Репутация: нет Всего: 8 |
Без проблем работает. |
||||
|
|||||
| Sur0vy |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 1.10.2009 Репутация: нет Всего: нет |
Спасибо kami. наконец все заработало без проблем.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |