Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 41

/ вопрос открыт /

Уважаемые эксперты! Вопрос такого плана: на TPanel (или ему подобном контейнере) находятся различные компоненты, которые создаются динамически. Требуется "за раз" удалить их все, чтобы потом заново создать. Как это реализовать? При обращении к Controls[n] зачастую программа вылетает с ошибкой. Заранее благодарю.

Dron Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Dron (статус: Студент)
Вопрос отправлен: 17 июня 2006, 13:09
Состояние вопроса: открыт, ответов: 3.

Ответ #1. Отвечает эксперт: min@y™

//=======================
Вот попробуй так:
//=======================

Приложение:
  1. for Index:= Panel.ControlCount - 1 downto 0 do
  2. Panel.Controls[Index].Free;


Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 17 июня 2006, 13:33
Оценка за ответ: 5

Комментарий к оценке: Сначала не понял, в чём отличие того, как писал я и как написали вы... А теперь понял - массив ведь каждый раз сдвигается... Спасибо! :-)

Ответ #2. Отвечает эксперт: Евгений Малышев

Здравствуйте, Dron.

Если Вы используете Delphi 5 или более новый, то можно использовать наследование от класса TFrame.

Создайте новый фрейм TFrame1 и поместите на него все нужные компоненты.

Ответ отправил: Евгений Малышев (статус: 1-ый класс)
Время отправки: 18 июня 2006, 21:22
Оценка за ответ: 3

Комментарий к оценке: Наверное вы не поняли вопроса... И как после этого быть? Удалять весь фрейм и потом заново создавать? Это можно сделать и с TPanel...

Ответ #3. Отвечает эксперт: Alexander A. Gribanov

Попробуй удалять не через Controls[n], а через Components[n]. Например так:
while YourPanel.ComponentСount>0 do YourPanel.Components[0].Free;

Ну и конечно не забывай о том, что таким образом будут удалены не те компоненты, которые на панели отображаются, а те, которыми панель владеет.

P.S.: ну и из вопроса не совсем понятно, почему ты создаешь components, а удаляешь widowed controls...

Ответ отправил: Alexander A. Gribanov (статус: 2-ой класс)
Время отправки: 19 июня 2006, 12:22
Оценка за ответ: 4


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:49
Выполнено за 0.02 сек.