Da das GridPanel die Komponenten selber ausrichtet, wirst du immer Probleme bekommen, wenn man da versucht selber was einzuordnen.
Vorallem dann, wenn die Position wo was einsortiert wird, mit denen von dir kollidiert.
Füge mal diesen Code ans Ende deiner inneren Schleife. (hinter die derstellte CheckBox)
Delphi-Quellcode:
Application.ProcessMessages;
Sleep(1000);
Und schau dir an, was da passiert.
Genau auf die Position der neuen und "alten" CheckBox achten.
So, und nun dreh mal die Erstellungsreihenfolge um, so daß keine Kollitionen mehr entstehen.
Delphi-Quellcode:
for i := 6 downto 2 do
for j := 6 downto i do
Wenn du später nicht via FindComponent auf die Komponenten zugreifen willst/mußt, dann kannst du den .Name auch leer lassen.
PS: Der [delphi]-Code macht sich bestimmt besser.