Форум: "Основная";
Текущий архив: 2004.02.17;
Скачать: [xml.tar.bz2];
ВнизДинамическое создание и удаление объектов Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.011 c