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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.12.2010, 15:28   #11
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Цитата:
Мне попросту нужно понять как удалить все созданные динамические компоненты
Код:
procedure TForm1.RzBitBtn2Click(Sender: TObject);
var i: Integer;
begin
  for i := ComponentCount - 1 downto 0 do
    if (Components[i] is TLabel) then
    //можно добавить такую проверку
    // if (Components[i] as TLabel).Tag > 0 then
      (Components[i] as TLabel).Free;
end;
_SERGEYX_ вне форума Ответить с цитированием
Старый 10.12.2010, 15:36   #12
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от Jetro Посмотреть сообщение
Мне попросту нужно понять как удалить все созданные динамические компоненты...
Как вариант: "привязать" ссылки на них в свойствах objects TStringList.
Код:
var
  StringList: TStringList;
  i: Integer;
  Lab: TLabel;
begin
  for i := 0 to StringList.Count-1 do begin
    Lab:= TLabel.Create(Self);
    StringList.Objects[I] := Lab;
    Lab.Caption := StringList[i];
    Lab.tag := i;
  end;
end;

//удаление
  for i := 0 to StringList.Count-1 do 
    StringList.Objects[I].Free;
Прик вне форума Ответить с цитированием
Старый 10.12.2010, 16:14   #13
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

ТС, вопрос надо бы задавать понятнее, а не так - хочу, но не знаю чего...Напишите конкретно, что надо...и думаю нужный ответ сразу же увидите сами...
Ну а из того, что я понял, тот тут Уткин естественно прав - объявляешь массив Баттоно (или чего там надо...), создаешь эти контролы и работаешь с ними. А для удаления юзаешь - FreeAndNil();
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 14.12.2010, 16:39   #14
Jetro
Пользователь
 
Регистрация: 15.11.2010
Сообщений: 31
По умолчанию

Забросил на выходные я Делфи, вернулся к нему только сейчас.
Итак, решил сделать так, как советовал Utkin - использовал динамический массив компонентов. Получилось приблизительно следующее:
Код:
var
  SL: TStringList;
  i: Integer;
  ButtonArray : array of TButton;

...

Procedure CreateBtn();
  begin
    SetLength(ButtonArray, SL.Count);
   for i := 0 to SL.Count-1 do
   begin
    ButtonArray[i]:= TButton.Create(Self);
    ButtonArray[i].Caption := SL[i];
    ButtonArray[i].Parent:=Self;
    ButtonArray[i].Width:= 150;
    ButtonArray[i].left := 20;
    ButtonArray[i].top := 50+i*(ButtonArray[i].Height);
    ButtonArray[i].OnClick := ArrayButtonClick;
   end;
  end;
Понятное дело что Стринглист заполняем до этих действий. Действие по нажатии динамической кнопки тоже не привожу из-за ненадобности.

А очищаем все это дело таким макаром:
Код:
procedure TForm1.RefreshButtonClick(Sender: TObject);
begin
 for i := 0 to SL.Count-1 do
  begin
   ButtonArray[i].Free;
  end;
CreateBtn; // Ну и пересоздаем кнопки
end;
Так-же очень даже неплохой вариант решения предложил Прик. По его решению тоже все отлично выполняется, но я все-же решил остановится на массиве компонентов - как оказалось с ним работать удобнее (как говорится - "Век живи, век учись").

Всем большое спасибо за помощь, без вас я-бы еще долго сидел-бы над решением.

Цитата:
Сообщение от spamer Посмотреть сообщение
ТС, вопрос надо бы задавать понятнее, а не так - хочу, но не знаю чего...Напишите конкретно, что надо...и думаю нужный ответ сразу же увидите сами...
Ну не знаю, старался попонятней изложить суть вопроса, даже пример набросал, но если так плохо разъяснил вопрос то прошу прощения.
Jetro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление динамических объектов / полная очистка формы 095 Общие вопросы Delphi 3 23.04.2012 16:09
Понятия принципа создания динамических объектов Golovastik Общие вопросы C/C++ 25 05.06.2010 21:18
Проблема с созданием динамических объектов. (Delphi7) Dalagardi Помощь студентам 2 15.03.2010 17:15
Имя динамических объектов PVD Общие вопросы Delphi 26 09.02.2010 15:38
Процедуры для динамических объектов Fruit Общие вопросы Delphi 8 30.12.2008 21:10