Ich würde die eine Liste aller SpinEdits erstellen und sortieren und dann einfach die SpinEdits, von unten beginnend, so lange den Regeln entsprechend (maximal 2 pro Fach) einfärben, bis 4 eingefärbt sind.
Delphi-Quellcode:
Gestrichen := 0;
for i := low(SpinEditListe) to high(SpinEditListe) do
if KannStreichen(SpinEditListe[i]) then begin
FaerbeDasSpinEditEin(SpinEditListe[i]);
inc(Gestrichen);
if Gestrichen = 4 then break;
end;
Die Funktion 'KannStreichen' prüft, ob in einem Fach nicht schon zwei Edits gestrichen wurden.