![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обращение к динамически созданной метке [D6, XP]
Fr3nch © (2005-11-12 16:37:00)Помогите решить:
Создаю метки следующим образом
for i := 1 to Z do
begin
l := TLabel.Create(self);
l.Parent := form1;
l.Top := random(500);
l.Left := random(500);
l.Caption := 'LABEL';
l.Transparent := true;
l.Name := 'label' + inttostr(i);
end;
Вопрос: как обращаться к этой метке, например, labelZ.caption := '...';
Fr3nch (2005-11-12 18:46:00) [1]благодарю!
StdCtrls (2005-11-12 17:41:00) [2]uses StdCtrls ;
var B: array[0..99] of TLabel;
procedure TForm1.FormCreate(Sender: TObject);
var i: word;
begin
for i := 0 to 99 do
begin
B[i] := TLabel.create(self);
with B[i] do
begin
parent := self;
tag := i;
width := 25;
Height := 25;
top := i div 10 * width;
left := (i * Height) - ((i div 10) * Height * 10);
Caption := 'B' + inttostr(i);
end;
end;
B[99].caption:='this is the label';
end;
SergP. (2005-11-12 17:40:00) [3]
> Вопрос: как обращаться к этой метке, например, labelZ.caption
> := '...';
А зачем же ты тогда теряешь указатели, если хочешь обращаться ко всем лейбам? У тебя же остается только указатель на последнюю метку...
После этого остается только искать по имени через FindComponent.
Лучше сохрани указатели в массив.
var
l:array of TLabel;
...
setlength(l,z);
for i := 0 to Z-1 do
begin
l[i] := TLabel.Create(self);
l[i].Parent := form1;
l[i].Top := random(500);
l[i].Left := random(500);
l[i].Caption := 'LABEL';
l[i].Transparent := true;
l[i].Name := 'label' + inttostr(i);
end;
После этого можешь обращаться к любой метке так например:
l[2].caption:='это одна метка';
l[8].caption:='это совсем другая метка';
...
stdctrls (2005-11-12 17:37:00) [4]uses stdctrls;
VAR B, B1: TLabel; cl: TNotifyEvent;
procedure TForm1.FormCreate(Sender: TObject);
begin
B := TLabel.create(self);
B1 := TLabel.create(self);
B.parent := self;
B.top := 50; B.left := 50;
b.Caption := '--B--';
B1.parent := self;
B1.top := 10; B1.left := 10;
B1.Caption := '--++B1++--';
end;