Hallo!
Also ich hab Deinen Code ausprobiert! Bei mir KOMMT da eine Fehlermeldung. Ich nehme mal an, dass bei Dir BZieleNr gar nicht über 10 kommt, weil BZieleControl zwischenzeitlich wieder verringert wird.
Setz mal an die Stelle des Aufrufs des Kontruktors (BZiel[BZieleNr] := TFlatButton.Create(Form1)) einen Haltepunkt und sieh mal nach, welchen Wert BZieleNr hat.
Du kannst ohne Probleme an die selbe Position des arrays mehrmals einen neuen Button erzeugen, auf den alten kannst Du dann nur nicht mehr zugreifen.
Ach so: Du könntest auch einfach mal alle Buttons im array einfärben, dann wirst Du vermutlich nicht alle erreichen, und es wird in Deiner Schleife zum Einfärben dann bei einem Wert über 10 ein Fehler kommen.
Wenn bei dem Haltepunkt bei Dir tatsächlich Werte über 10 auftauchen, vergiss alles, was ich bisher gesagt habe.
Ach so: Mit Delphi 3 hab ich das allerdings nicht probiert...
MfG,
S.J.