Deine while-Konstruktion ist mir suspekt. Wenn ich dich recht verstanden habe, willst du einfach eine for-Schleife. Diese durchläufst du rückwärts, weil sich ja während des Durchlaufs ControlCount ändert:
Delphi-Quellcode:
procedure TForm1.checkboxes_destroy;
var
i: Integer;
begin
for i := ControlCount - 1 downto 0 do
if Controls[i] is TCheckBox then
begin
Controls[i].Destroy;
end;
end;
DeddyHs Frage bezüglich der Array-Variablen führt aber wahrscheinlich zu einer besseren Lösung.
HTH,
Uli.