Deine if-Anweisung führt NUR DAS ERSTE CASE aus:
Delphi-Quellcode:
for ichecked := 0 to CheckListBox1.Items.Count-1 do
if CheckListBox1.Checked[ichecked] then
// if bezieht sich auf die NÄCHSTE Anweisung (da Du keinen begin...end-Block benutzt)
case iZaehler of
0..9:
begin
Frames := TFrame4.Create(Self);
L.Add(Frames);
Frames.ClientHeight := 200;
Frames.Name:='';
iZaehler := iZaehler + 1;
iGecheckteframes := iGecheckteframes + 1;
Frames.Parent := Formular;
end;
end;
// ab hier wird IMMER ausgeführt
case iZaehler of
10:
begin
for I := l.Count -1 downto 0 do
begin
Also nochmal:
Rücke alles so ein, dass alle nachfolgenden (gleichrangigen) Anweisungen GENAU untereinander stehen.
Das betrifft auch begin und end -> sollen genau untereinander stehen.
alles zwischen begin und end wird um 2 Zeichen eingerückt.
Dann hättest Du Dein o.g. Problem selbst gesehen!
Das erste case kannst Du auch ersethen durch:
if iZaehler < 10 then begin ... end
da Du ja nicht unterschiedliche Fälle behandeln willst.
Du machst Dir Deine Probleme selbst, da Du viel zu luschig arbeitest. 3 Min in eine ordentliche Quelltextstruktur inversieren kann 3 Stunden Fehlersuche sparen!