Вниз
Скачать: CL | DM;

Почему не удаляется все объекты на форме?   Найти похожие ветки 

 
qwert_leonid   (2007-10-23 16:08) [0]

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

  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?


 
homm ©   (2007-10-23 16:10) [1]

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

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


 
Kolan ©   (2007-10-23 16:12) [2]

TEdit(Components[U2]).Free;

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

вроде все правильно&#133

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


 
Ega23 ©   (2007-10-23 16:13) [3]

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) [4]

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


 
Palladin ©   (2007-10-23 16:14) [5]

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

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

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

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


 
Anatoly Podgoretsky ©   (2007-10-23 16:15) [6]

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


 
qwert_leonid   (2007-10-23 16:16) [7]

Ega23

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

А что тут List?


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


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

Palladin

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

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



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.014 c
2-1192974628
alex_ant
2007-10-21 17:50
2007.11.18
Почему освобождённые объекты не ссылаются на nil


2-1193126277
Sergey2
2007-10-23 11:57
2007.11.18
длина строки в пикселях


2-1193120999
jden
2007-10-23 10:29
2007.11.18
взаимодействие между формами в dll


8-1169483520
diman_1978
2007-01-22 19:32
2007.11.18
DSPack подключение De-Interlace фильтра


2-1193234037
NewestAlex
2007-10-24 17:53
2007.11.18
TUpDown +не целые значения




   Наверх