In neueren Delphis sollen ja TFlowPanel und TGridPanel für solche Fälle gedacht sein,
lso hier speziell das TFlowPanel.
Warum setzt du eigentlich Left doppelt?
Delphi-Quellcode:
MaximaleAnzahlProZeile := {Parent}.ClientWidth div Breite;
...
xxx[i].Left := (i mod MaximaleAnzahlProZeile) * Breite;
xxx[i].Top := (i div MaximaleAnzahlProZeile) * Höhe;