Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Обращение к динамически созданной метке [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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо