Einzelnen Beitrag anzeigen

BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#3

AW: Anordnen von zur Laufzeit erzeugten Komponenten (hier Button)

  Alt 7. Apr 2022, 21:17
Du machst es dir unnötig kompliziert.
I ist schon der Index für das Array und das Array kann man am Anfang gleich auf die richtige Länge setzen.
Wenn man den gerade erzeugten Button in eine Variable legt, erspart man sich den ständigen Zugriff auf das Array.
Das erkennen einer neuen Zeile geht auch einfacher.
Delphi-Quellcode:
var i, zeile, spalte: Integer;
    AbstandX, OffsetX: Integer;
    AbstandY, OffsetY: Integer;
    Btn: TButton;
begin

  SetLength(MyBtns, CONST_SOUNDBUTTONS);

  AbstandX := 10; // Abstand der einzelnen Spalten
  OffsetX := 25; // Abstand der ersten Spalte von links

  AbstandY := 20; // Abstand der einzelnen Zeilen
  OffsetY := 100; // Abstand der ersten Zeile von oben

  zeile := 0;
  spalte := 0;

  for i := 0 to CONST_SOUNDBUTTONS - 1 do
  begin
    Btn := TButton.Create(Self);
    MyBtns[I] := Btn;
    Btn.Parent := TabSheet2;
    Btn.Name := 'btnSound' + IntToStr(i);
    //Btn.Caption := 'Sound ' + IntToStr(i+1);

    // nur zum Ansehen der aktuellen Spalten- und Zeilenwerte
    Btn.Caption := IntToStr(spalte) + '|' +
                                        IntToStr(zeile);

    Btn.Height := 25;
    Btn.Width := 75;


    Btn.Left :=
      spalte * (AbstandX + Btn.Width) + OffsetX;

    Btn.Top :=
      zeile * (AbstandY + Btn.Height) + OffsetY;
    Inc(Spalte);

    if Spalte = 5 then
    begin
      Spalte:= 0;
      Inc(Zeile);
    end;
  end;
end;
  Mit Zitat antworten Zitat