Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.013 c
6-53665
Pavels
2003-12-15 12:54
2004.02.17
посылка письма из ActiveX


1-53484
zamkom
2004-02-05 17:29
2004.02.17
Формат даты


4-53821
zDEUSz
2003-12-07 15:52
2004.02.17
ReadFile и заполнение структуры


14-53731
хз
2004-01-23 13:30
2004.02.17
Продолжение истории противостояния...


3-53388
Smalik
2004-01-27 11:40
2004.02.17
Как программно очистить таблицу в Access e




   Наверх