Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.17;
Скачать: CL | DM;

Вниз

Динамическое создание и удаление объектов   Найти похожие ветки 

 
Mikka ©   (2004-02-08 12:45) [0]

На панели создал динамически объект TLable с помощью Create и FindComponent...все нормально...А вот как удалить эту метку - не получается...Как можно это сделать???


 
Sergey_Masloff   (2004-02-08 12:53) [1]

Найти и сделать ему Free()


 
Mikka ©   (2004-02-08 12:58) [2]

Делал так, но с панели все равно не убирается


 
Sergey_Masloff   (2004-02-08 13:14) [3]

убирается.


 
Mikka ©   (2004-02-08 14:04) [4]

Делаю вот так...
Создание объекта
procedure TForm1.Button1Click(Sender: TObject);
var l:Tlabel;
begin
l:=Tlabel.Create(Application);
with TLabel(Findcomponent("l")) do
begin
l.Caption:="fgfgfg";
l.Top:=100;
l.Left:=100;
l.Parent:=Panel1;
end;
end;

Удаление объекта
with TLabel(Findcomponent("l")) do Free;
panel1.Update;

Но метка не убирается...


 
Anatoly Podgoretsky ©   (2004-02-08 14:09) [5]

Значит не находит, такого объекта просто нет и благодари бога, что Findcomponent и Free безопасные в использовании, в других случаях вылетишь по ошибка доступа к памяти.


 
KosilkA ©   (2004-02-08 14:19) [6]

procedure TForm1.Button1Click(Sender: TObject);
var l:Tlabel;
begin
l:=Tlabel.Create(Panel1);
with TLabel(Findcomponent("l")) do
begin
l.Caption:="fgfgfg";
l.Name:="l";
l.Top:=100;
l.Left:=100;
l.Parent:=Panel1;
end;
end;

......

panel1.FindComponent("l").Destroy;


 
Mikka ©   (2004-02-08 14:25) [7]

/panel1.FindComponent("l").Destroy;/

Вылетает...ошибка памяти...
А каким способом еще можно создать динамически компонет???


 
KosilkA ©   (2004-02-08 14:59) [8]

да вообще фигня какая то ... только щас присмотрелся к твоему коду... зачем написал with TLabel(Findcomponent("l"))do...??
если можно просто :

procedure TForm1.Button1Click(Sender: TObject);
var l:Tlabel;
begin
l:=Tlabel.Create(Panel1);
l.Caption:="fgfgfg";
l.Name:="l";
l.Top:=100;
l.Left:=100;
l.Parent:=Panel1; << кстати тоже не обязательно уже , см.выше Tlabel.Create(Panel1)
end;
end;

а насчет ошибок. я у себя сейчас попробовал-ничего не вылетает...


 
KosilkA ©   (2004-02-08 15:03) [9]

а чем ты кстати вызываешь процедуру уничтожения лейбла ? если использовать его(созданного тобой-же лейбла) методы ,то будут ошибки..


 
KosilkA ©   (2004-02-08 15:10) [10]

ааа забыл ... еще нужно panel1.insertcontrol(l)


 
MBo ©   (2004-02-08 15:19) [11]

Findcomponent принимает ИМЯ компонента, а не название переменной.

l:=Tlabel.Create(Application);
with l do
begin
Caption:="fgfgfg";
Top:=100;
Left:=100;
Parent:=Panel1;
end;
...

l:=Findcomponent("fgfg"));
if l<> nil then
l.Free;


 
Chlavik ©   (2004-02-08 15:20) [12]

А зачем её вообще убивать
Label:=Tlabel.Create(Panel1);
А так просто visble:=false;


 
Mikka ©   (2004-02-08 15:34) [13]

работает, всем сенкс....



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

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

Наверх




Память: 0.49 MB
Время: 0.021 c
14-53706
Marina_S
2004-01-29 21:31
2004.02.17
запуск дос программы


3-53381
Gorlum
2004-01-27 14:05
2004.02.17
PARADOX.LCK, PDOXUSRS.LCK


1-53633
Мыш
2004-02-06 07:13
2004.02.17
перехват вызовов процедур


6-53684
serferian
2003-12-05 10:58
2004.02.17
Имя пользователя терминала Win2k


1-53455
Dik
2004-02-06 15:51
2004.02.17
TRichEdit