Главная страница
    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.5 MB
Время: 0.047 c
4-1177666060
Nucer
2007-04-27 13:27
2007.10.28
Как получить список процессов всех пользователей (Win XP)


2-1191593097
Vitek2
2007-10-05 18:04
2007.10.28
"Сохранить" и "Сохранить как..".


2-1191755357
Антон Шестаков
2007-10-07 15:09
2007.10.28
Занята строка в таблице


10-1139173733
Nadi
2006-02-06 00:08
2007.10.28
Выравнивание Картинки в тексте Word


15-1190701158
alshtam
2007-09-25 10:19
2007.10.28
3.5 дисковод





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский