Перейти к содержанию
  • Регистрация
  • 0
Владимир Невзоров

Не удаляется массив динамически созданных компонентов.

Вопрос

Столкнулся с такой вот проблемой, при динамическом создании компонент:

объявляю глобальную переменную rect:array of TRectangle;

устанавливаю setLength(rect,0);

где вызываю компоненты пишу


 if form1.FindComponent('DN1')<>nil then showmessage('Не удалили');
  for i := 0 to 6 do begin
    setLength(rect, i+1);
 	rect[i]:=TRectangle.Create(form1);
 	rect[i].Parent:=form1.rt0; 
 ...
 	rect[i].Name:='DN'+inttostr(i+1);
 	rect[i].OnClick:=form1.RectangleClick;
  end;

в процедуре удаления компонент пишу:

for i:=0 to Length(rect)-1 do begin
rect[i].Free;
rect[i]:=nil;
freeandnil(rect[i]);
 end;
setLength(rect,0);

так вот, после первого вызова все нормально выводится сообщение 'Не удалили' не появляется, onclick срабатывает. При попытке удалить компоненты выходит сообщение 'Не удалили' и при втором вызове создания компонентов на телефоне выходит сообщение "A component named DN1 already exists". 

Хотя в windows удаляются компоненты правильно и ошибки не выходят.

Может это баг такой, но уже ни знаю что и делать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Рекомендуемые сообщения

Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...