array of TLABEL

0

Ktos moze wie dlaczego to nie dziala. CHodzi o nadanie wlasciwosci caption:='' dla wszystkich buttonow

private
lbl: Array[1..20] of TLabel

procedure TForm1.Button1Click(Sender: TObject);
var i:byte;

begin
    for i:=1 to 20 do
    lbl[i].Caption:='';
end;

wczesniejszy post do usuniecia, sorki

0

Najpierw obiekty trzeba stworzyc:

private
lbl: Array[1..20] of TLabel

procedure TForm1.Button1Click(Sender: TObject);
var i:byte;

begin
    for i:=1 to 20 do
      lbl[i] = TLabel.Create();
    for i:=1 to 20 do
      lbl[i].Caption:='';
end;
0

A nie wystarczy ze sa one na formie, poza tym to co napisales nie chce sie skopilowac

zrobilem tak jak nizej, uruchamia sie ale caption i tak sie nie zmienia

procedure TForm1.Button2Click(Sender: TObject);
var i,j:byte;

begin

    for i:=1 to 20 do
    lbl[i]:=TLabel.Create(self);

    for i:=1 to 20 do
    lbl[i].Caption:='';

end;

hmm.......

0

zrobilem tak jak nizej, uruchamia sie ale caption i tak sie nie zmienia

procedure TForm1.Button2Click(Sender: TObject);
var i,j:byte;

begin

    for i:=1 to 20 do
    lbl[i]:=TLabel.Create(self);

    for i:=1 to 20 do
    lbl[i].Caption:='';

end;

hmm.......

A parent a top, left?? Raczej na formie w ogole ich nie ma.

0

ort! coś jeszcze takiego do każdego labela po utworzeniu go przez funkcję Create():

form.InsertControl(lbl[i]);
0

wszystkie labele sa na formie, chodzi po prostu o to zeby zmazac w nich napisy w petli korzystajac z tablicy obiektow. zamiast labela moze byc TEdit, chce tylko zobaczyc jak to dziala.

0

Może kładziesz labele na formiae w designtime, a potem tworzysz PUSTĄ tablicę i myślisz, że te co położyłeś na formie tam są? Najpierw przypisz te labele do tablicy.

0

Aaaa, masz tablice Labelów, ale komputer nie wie, że te Labele są na formie;)

for a:=1 to 20 do l bl[a]:=FindComponent...

Dalej sam pokombinuj ;)

0

jesli ktos potrzebowalby w przyszlosci:

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
const
  NamePrefix = 'edit';
begin
  for i := 1 to 20 do begin
    TEdit.Create(Self).Name := NamePrefix + IntToStr(i);
    with TEdit(FindComponent(NamePrefix + IntToStr(i))) do
    begin
      text:='';
      Left := 10;
      Top := i * 20;
      Parent := self;
    end;
  end;


end;

end.

[cygaro]

prawde powiedziawszy rozwiazanie z tablicami odpowiadaloby mi bardziej

0

słyszałeś kiedyś o operatorze "as" ??

0

Tak patrze, i myślę, i chyba o to ci chodzi :]

var i:integer;
begin
 for i:=0 to Form1.ComponentCount-1 do
  if Form1.Components[i].ClassNameIs('TLabel') then
   TLabel(Form1.Components[i]).Caption:='';
0

dzieki, o to chodzilo [browar]

1 użytkowników online, w tym zalogowanych: 0, gości: 1