Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2010, 00:11   #1
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию Отчистить ScrollBox

Здравствуйте
Вопрос на повестке: как удалить все обьекты из ScrollBox кодом?
Всего в нем около 300 всяких Image и Label. Как отчистить полностью Скролл бокс от них?
ScrollBox1.clear несуществует....
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 01.09.2010, 00:15   #2
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

А они на нем динамически создавались?
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.09.2010, 00:18   #3
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Да, динамически. 13 массивов
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 01.09.2010, 00:24   #4
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

ну почему бы тебе перебором не удалять элементы массивов?
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.09.2010, 00:29   #5
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

нудно... ну должна же быть функция отчистки СкроллБокса...

Щас вот подумал, если вообще никак... может просто Destroy а потом Сreate?
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось artemavd; 01.09.2010 в 03:45.
MyLastHit вне форума Ответить с цитированием
Старый 01.09.2010, 00:33   #6
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

м-да... вот держи попробуй:
Код:
var
  n : integer;
begin
  with ScrollBox1 do
    repeat
      begin
        n:=ControlCount - 1;
        ScrollBox1.Controls[n].Free;
      end;
    until
      ControlCount - 1<>0;
end;
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.09.2010, 00:36   #7
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Спасибо! Но Почему он поочереди удаляет элементы? Мемо-CheckBox-Button... Хотя как раз то что нужно, удаляет Image и Label разом.
Спасибо большое!)
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 01.09.2010, 00:37   #8
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

потому, что просто удаляет их по мере нахождения вставь перед циклом ScrollBox1.visible:=false, а после цикла ScrollBox1.visible:=true. И переменную можно убрать:
Код:
begin
ScrollBox1.visible:=false
  with ScrollBox1 do
    repeat
      begin
        ScrollBox1.Controls[ControlCount - 1].Free;
      end;
    until
      ControlCount - 1<>0;
ScrollBox1.visible:=true
end;
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 01.09.2010, 09:09   #9
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

А можно проще:
Код:
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
  I: integer;
begin
  for I := 0 to ScrollBox1.ComponentCount - 1 do
  begin
    if ScrollBox1.Components[I] <> nil then
      ScrollBox1.Components[I].Free;
  end;
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 01.09.2010, 09:47   #10
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от Marsel737 Посмотреть сообщение
А можно проще:
Код:
procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
var
  I: integer;
begin
  for I := 0 to ScrollBox1.ComponentCount - 1 do
  begin
    if ScrollBox1.Components[I] <> nil then
      ScrollBox1.Components[I].Free;
  end;
end;
А Вы проверьте . Я тоже так сначала делал, но потом решил пользовать Repeat, т.к. при удалении первого же комонента индексы остальных меняются.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отчистить текст от грязи?? Memfis1992 Работа с сетью в Delphi 2 21.06.2010 14:15
ScrollBox SNUPY Помощь студентам 3 22.09.2009 18:51
Delphi7. Как отчистить Panel? AlexandЯ Помощь студентам 1 07.05.2009 13:57
Как отчистить объектив? Altera Свободное общение 6 06.04.2009 23:11
Как отчистить имедж? Altera Компоненты Delphi 5 20.02.2008 22:00