Zmiana parametru wielu komponentów na raz

1

Cześć!
W jaki sposób zamiast pisać przykładowo:

button1.caption:=inttostr(random(100));
…
button100.caption:=inttostr(random(100));

Mogę napisać to szybciej?

1

Możesz w pętli skorzystać z FindComponent, następnie rzutować wynik na konkretną klasę i dobrać się do właściwości Caption. Niżej dwie wersje, pierwsza podstawowa, druga z wykorzystaniem helperów (nie wiem czy Twoje Delphi takowe wspiera):

var
  I: Integer;
begin
  for I := 0 to 100 do
    (FindComponent('Button' + IntToStr(I)) as TButton).Caption := IntToStr(Random(100));
var
  I: Integer;
begin
  for I := 0 to 100 do
    (FindComponent('Button%d'.Format([I])) as TButton).Caption := Random(100).ToString();

Druga napisana w oparciu o funkcjonalność Free Pascala, w razie czego. Sam wolałbym najpierw pobrać referencję, a dopiero później zmodyfikować co trzeba. Czyli w ten sposób:

var
  Button: TButton;
  Index: Integer;
begin
  for I := 0 to 100 do
  begin
    Button := FindComponent('Button%d'.Format([Index])) as TButton;
    Button.Caption := Random(100).ToString();
  end;

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