Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.28;
Скачать: 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 вся ветка

Текущий архив: 2007.10.28;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.021 c
2-1191334006
Pacific
2007-10-02 18:06
2007.10.28
WebBrowers


15-1191497196
iZEN
2007-10-04 15:26
2007.10.28
50 лет первому ИСЗ, во что верить?


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


11-1174582796
ElectriC
2007-03-22 19:59
2007.10.28
Collapse


2-1191533338
Альберт
2007-10-05 01:28
2007.10.28
потоки