Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Почему не удаляется все объекты на форме? [D6, XP]


qwert_leonid ©   (2007-10-23 16:08:00) 

Вот код, вернее кусочек.......

  for U2 :=0 to ComponentCount - 1 do begin
    if (Components[U2] is TEdit) then begin
    ShowMessage ('Удалить');
    TEdit(Components[U2]).Free; //На каком то этапе неудаляется... хотя если сделать TEdit(Components[U2]).Visible :=false, то абсолютно все компоненты невидны??  end;  end;

  for i :=0 to List.Count-1 do begin
   with TEdit.Create(Self) do
   begin
     Top :=15 + koordinataXX;
     Left :=10;
     Caption := 'CCO'+ ' ' +IntToStr (i);
     Tag :=0+i;
     Parent :=ScrollBox2;
     koordinataXX :=koordinataXX + 30;
   end;
  end;

Как удалить все компоненты которые TEdit?


qwert_leonid   (2007-10-23 16:19:00) [1]

Palladin

Спасибо.
For i:=ComponentCount-1 Downto 0 Do
If (Components[i] is TEdit) Then Components[i].Free;

А то я запутался совсем


qwert_leonid   (2007-10-23 16:16:00) [2]

Ega23

Как удалить все компоненты которые TEdit?

А что тут List?


  List:=TStringList.Create;
 List.LoadFromFile(CurrentDir+'\map\psi'+ IntToStr (TComponent(Sender).Tag));
 List.Free;


Anatoly Podgoretsky   (2007-10-23 16:15:00) [3]

И наверно AV возникает?


Palladin   (2007-10-23 16:14:00) [4]

так понятное дело... смодулировать ситуацию такого подхода к удалению чего либо из какого либо списка - не судьба...

понимаешь... цикел у тебя до count, но в процессе удаления count сам по себе меняется... соответственно есть некий момент времени когда итерационная переменная выйдет за пределы этого самого реального count....

которые TEdit, да без проблемм

For i:=ComponentCount-1 Downto 0 Do
If (Components[i] is TEdit) Then Components[i].Free;


Ega23   (2007-10-23 16:13:00) [5]

for i :=0 to List.Count-1 do begin
  with TEdit.Create(Self) do
  begin
    Top :=15 + koordinataXX;
    Left :=10;
    Caption := 'CCO'+ ' ' +IntToStr (i);
    Tag :=0+i;
    Parent :=ScrollBox2;
    koordinataXX :=koordinataXX + 30;
  end;
 end;


Как удалить все компоненты которые TEdit?

А что тут List?


temp_and_test   (2007-10-23 16:13:00) [6]

Вот раз удалил, два удалил, три удалил, а четыре - Н Е У Д А Л И Л. С ошибкой вылетает List Index out of bounds (30)


Kolan   (2007-10-23 16:12:00) [7]

TEdit(Components[U2]).Free;

За чем вообще привобить к TEdit? У TObject есть Free.

вроде все правильно…

Офор млятьучись :(
for U2 := 0 to ComponentCount — 1 do
begin
 if Components[U2] is TEdit then
 begin
   ShowMessage ('Удалить');
   Components[U2].Free; //На каком то этапе неудаляется… хотя если сделать TEdit(Components[U2]).Visible :=false, то абсолютно все компоненты невидны??  
 end;  
end;


homm   (2007-10-23 16:10:00) [8]

> [0] qwert_leonid   (23.10.07 16:08)
> TEdit(Components[U2]).Free;

Так не пробовал?
(Components[U2] as TEdit).Free;


Наверх

Титульная страница Поиск, карта сайта Написать письмо