![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление динамических объектов / полная очистка формы [D6]
timekiller © (2007-10-03 20:48:00)Уважаемые, подскажите:
На форме динамически создаются несколько десятков объектов : кнопки, чекбоксы, мемы всякие и проч
Как этот весь хлам динамически удалить сразу с формы весь одной кнопой??
Джо (2007-10-07 21:05:00) [1]>>задаешь им родителя
Владельца.
Джо (2007-10-07 21:05:00) [2]
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;
Gadenysh (2007-10-07 20:52:00) [3]destroycomponents
timekiller (2007-10-07 13:40:00) [4]Убейте меня!!!! читаю только самые последние ответы
Всё пшёл тестить ....... Спасибы Спасибы всем!
engine (2007-10-07 13:38:00) [5]> [20] timekiller © (07.10.07 13:37)
номера ответов в данной ветке.
timekiller (2007-10-07 13:37:00) [6]А что такое [4] и [5] ?
Я токо и успеваю делать что слово брякнуть хоть куданибуть и выбигать с форума ....
timekiller (2007-10-07 13:36:00) [7]ок ....... спяшу !! уже с прогой вцелом опоздал на неделю по срокам
engine Спасибы ! Коекак заработало ))) потестирю еще
engine (2007-10-07 13:33:00) [8]> [17] engine © (07.10.07 13:27)
блин, в [4] уже все написано.
engine (2007-10-07 13:27:00) [9]
for cmpn:= ComponentCount 1 downto 0 do
DVM (2007-10-07 13:16:00) [10]
> Кстати борюсь с ашыпкай !!! какойто list index out of bounds
> (58), Че с этитм делать ??????????
Тебя ж о ней предупредили в [5]
timekiller (2007-10-07 13:13:00) [11]ёёёёё = ))))))))
Я написал здесь ПРИМЕРНО и ВРУЧНУЮ , код не копировал сюда = ))))
А Вот сам код например:
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), Че с этитм делать ??????????
Тоесть удаляется только половина компонентов динамических с присвоенными тагами ....
Плохиш (2007-10-06 17:00:00) [12]
> DVM © (04.10.07 21:25) [9]
> 48-ой компонент живучий однако оказался.
Ну надо было человеку 5ть компонентов удалить ;-)
> timekiller © (04.10.07 21:20) [7]
Откуда номера брал?
Denis_ (2007-10-06 15:15:00) [13]Написал же ZeroDivide, а потом clickmaker его исправил! Чего ещё надо?
DVM (2007-10-06 15:10:00) [14]
> я быстро быстро писал в состоянии эйфории = )))))
Так не совсем правильно же написал. Циклы отменили что ли?
Denis_ (2007-10-06 15:09:00) [15]Мдя. "динамически"! А если 5000 компонентов? 5000 строк? А если 321 компонент будет вообще живучим? Тогда что?
timekiller (2007-10-06 14:58:00) [16]
> 48-ой компонент живучий однако оказался
я быстро быстро писал в состоянии эйфории = )))))
DVM (2007-10-04 21:25:00) [17]48-ой компонент живучий однако оказался.
engine (2007-10-04 21:23:00) [18]> [7] timekiller © (04.10.07 21:20)
грамотно
timekiller (2007-10-04 21:20:00) [19]ААА а!!
в итоге получилось :
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
Но все равно спасибы = ))
ZeroDivide (2007-10-04 10:18:00) [20]>И здравствуй
:)
Да...