Страница 1 из 1

Динамическое создание Label

Добавлено: 28 май 2007, 21:52
maxter
Господа! Есть задача динамически создавать Label's на компоненте TPanel. Пишу: My_label:= TLabel.Create(Form1.Panel1);
Затем описываю различные свойства типа,Caption,Font,Top,Left,Height,Width,Color,Visible.В конце My_label.Free;
При запуске новый Label не создается. Что надо сделать? Либо может кто знает компонент,но не Memo, где можно писать текст в несколько строк. Memo не подходит,так как строки должны быть статичными. Заранее спасибо.

Re: Динамическое создание Label

Добавлено: 29 май 2007, 01:05
Blood_Magic
А ничего сложного тута и нет:

Код: Выделить всё

procedure CreateLabels(const pn:TPanel; const Count:integer);
var
  i:integer;
  lb:TLabel;
begin
  for i:=1 to Count do
    begin
      lb:=TLabel.Create(pn);
      lb.Parent:=pn;
      lb.Left:=random(pn.Width);
      lb.Top:=random(pn.Height);
      lb.Caption:=FloatToStr(random);
      lb.Name:='lb'+IntToStr(pn.ComponentCount);
    end;
end;
procedure DeleteLabels(const pn:TPanel);
var
  i:integer;
  lb:TLabel;
begin
  for i:=pn.ComponentCount-1 downto 0 do
    if pn.Components[i] is TLabel then
      TLabel(pn.Components[i]).Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
  CreateLabels(Panel1,10);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
  DeleteLabels(Panel1);
end;

Re: Динамическое создание Label

Добавлено: 29 май 2007, 01:40
Игорь Акопян
угу, не забыть свойство Parent. И ещё, если передать в Create параметр AOwner равный например Form1, то удалять созданные Лейблы не обязательно. Все вложенные компоненты будут удалены деструктором родителя