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

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

← →
timekiller ©   (2007-10-03 20:48) [0]

Уважаемые, подскажите:

На форме динамически создаются несколько десятков объектов : кнопки, чекбоксы, мемы всякие и проч

Как этот весь хлам динамически удалить сразу с формы весь одной кнопой??


← →
b z   (2007-10-03 21:07) [1]

как вариант - "убить" общего влядельца (owner), если такой имеется


← →
Германн ©   (2007-10-04 01:24) [2]


> Как этот весь хлам динамически удалить сразу с формы весь
> одной кнопой??

А зачем вообще было создавать "хлам"?


← →
ZeroDivide ©   (2007-10-04 10:08) [3]

for n := 0 to YourForm.ComponentCount -1 do
 YourForm.Components[n].Free;


← →
clickmaker ©   (2007-10-04 10:12) [4]


> [3] ZeroDivide ©   (04.10.07 10:08)
> for n := 0 to YourForm.ComponentCount -1 do
>  YourForm.Components[n].Free;

for n := YourForm.ComponentCount -1 downto 0 do


← →
Юрий Зотов ©   (2007-10-04 10:13) [5]

> ZeroDivide ©   (04.10.07 10:08) [3]

И здравствуй, ошибка выхода за границы массива.


← →
ZeroDivide ©   (2007-10-04 10:18) [6]

>И здравствуй
:)
Да...


← →
timekiller ©   (2007-10-04 21:20) [7]

ААА а!!
в итоге получилось :

MainFRM.Components[1].Free
MainFRM.Components[14].Free
MainFRM.Components[46].Free
MainFRM.Components[47].Free
MainFRM.Components[48].Free
MainFRM.Components[48].Free
MainFRM.Components[48].Free
MainFRM.Components[48].Free
MainFRM.Components[48].Free
MainFRM.Components[163].Free

Но все равно спасибы = ))


← →
engine ©   (2007-10-04 21:23) [8]

> [7] timekiller ©   (04.10.07 21:20)

грамотно&#133


← →
DVM ©   (2007-10-04 21:25) [9]

48-ой компонент живучий однако оказался.


← →
timekiller ©   (2007-10-06 14:58) [10]


> 48-ой компонент живучий однако оказался


я быстро быстро писал в состоянии эйфории = )))))


← →
Denis_ ©   (2007-10-06 15:09) [11]

Мдя. "динамически"! А если 5000 компонентов? 5000 строк? А если 321 компонент будет вообще живучим? Тогда что?


← →
DVM ©   (2007-10-06 15:10) [12]


> я быстро быстро писал в состоянии эйфории = )))))

Так не совсем правильно же написал. Циклы отменили что ли?


← →
Denis_ ©   (2007-10-06 15:15) [13]

Написал же ZeroDivide, а потом clickmaker его исправил! Чего ещё надо?


← →
Плохиш ©   (2007-10-06 17:00) [14]


> DVM ©   (04.10.07 21:25) [9]
> 48-ой компонент живучий однако оказался.

Ну надо было человеку 5ть компонентов удалить ;-)

> timekiller ©   (04.10.07 21:20) [7]

Откуда номера брал?


← →
timekiller ©   (2007-10-07 13:13) [15]

ёёёёё = ))))))))
Я написал здесь ПРИМЕРНО и ВРУЧНУЮ , код не копировал сюда = ))))

А Вот сам код например:

 for cmpn:=0 to MainFRM.ComponentCount-1 do
 begin
   ShowMessage(IntToStr(Components[cmpn].Tag));
   if Components[cmpn].Tag>0 then Components[cmpn].Free;
 end;

Кстати борюсь с ашыпкай !!! какойто list index out of bounds (58), Че с этитм делать ??????????

Тоесть удаляется только половина компонентов динамических с присвоенными тагами ....


← →
DVM ©   (2007-10-07 13:16) [16]


> Кстати борюсь с ашыпкай !!! какойто list index out of bounds
> (58), Че с этитм делать ??????????

Тебя ж о ней предупредили в [5]


← →
engine ©   (2007-10-07 13:27) [17]

for cmpn:= ComponentCount — 1 downto 0 do
&#133


← →
engine ©   (2007-10-07 13:33) [18]

> [17] engine ©   (07.10.07 13:27)

блин, в [4] уже все написано.


← →
timekiller ©   (2007-10-07 13:36) [19]

ок ....... спяшу !! уже с прогой вцелом опоздал на неделю по срокам

engine Спасибы ! Коекак заработало ))) потестирю еще


← →
timekiller ©   (2007-10-07 13:37) [20]

А что такое [4] и [5] ?
Я токо и успеваю делать что слово брякнуть хоть куданибуть и выбигать с форума ....


← →
engine ©   (2007-10-07 13:38) [21]

> [20] timekiller ©   (07.10.07 13:37)

номера ответов в данной ветке.


← →
timekiller ©   (2007-10-07 13:40) [22]

Убейте меня!!!! читаю только самые последние ответы

Всё пшёл тестить ....... Спасибы Спасибы всем!


← →
Gadenysh   (2007-10-07 20:52) [23]

destroycomponents


← →
Джо ©   (2007-10-07 21:05) [24]

Form1 = class (TForm)
...
private
 FOwnerComponent: TComponent;
...
end;

...
procedure TForm1.CreateComponents;
begin
 FOwnerComponent := TComponent.Create (Self);
 // При создании своих контроллов задаешь им родителя
 SomeComponent1 := TSome1.Create (FOwnerComponent);
 SomeComponent2 := TSome2.Create (FOwnerComponent);
 ...
end;

procedure TForm1.DestroyComponents;
begin
 // Вот и всё.
 FOwnerComponent.Free;
end;


← →
Джо ©   (2007-10-07 21:05) [25]

>>задаешь им родителя
Владельца.



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

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



Память: 0.5 MB
Время: 0.015 c
2-1191309272
kukuikar
2007-10-02 11:14
2007.10.28
Монитор каталогов+поток+имяфайла


11-1174493166
Vladimir Kladov
2007-03-21 19:06
2007.10.28
Версия 2.55


1-1187252176
Gbp
2007-08-16 12:16
2007.10.28
Как заставить нормально работать форму в службе (service?


15-1190722116
boriskb
2007-09-25 16:08
2007.10.28
База зарплат программистов


15-1191578295
Германн
2007-10-05 13:58
2007.10.28
С Днем Учителя!




   Наверх