Hier solltest du unbedingt nach der Ursache forschen und diese abstellen:
Delphi-Quellcode:
GeheZuMarkierterFrage(ListBoxHorizontal);
GeheZuMarkierterFrage(ListBoxHorizontal); //bei einmaligen Aufruf springt das Kästchen manchmal falsch
Ohne den kompletten Quelltext kann ich nur vermuten, du reagierst auch im SGridKreuzwort auf das Auswählen einer Zelle und beeinflusst dort den Index in den Listboxen. Das sollte aber beim Debuggen auffallen.
Delphi-Quellcode:
//
//TForm1.SGridKreuzwortSelectCell: wird beim Auswählen einer Zelle aufgerufen
//
procedure TForm1.SGridKreuzwortSelectCell(Sender: TObject; aCol, aRow: Integer;
var CanSelect: Boolean);
var
FrageExistiert: Boolean;
begin
//Verhindern, dass Kästchen mit Zahlen oder geschwärzte Kästchen ausgewählt werden
if DasKreuzWortgitter.Breite > 0 then
begin
CanSelect := (DasKreuzwortgitter.GibFeld(aRow,aCol).Farbe = clWhite) and
not (DasKreuzwortgitter.GibFeld(aRow,aCol).Inhalt[1] in ['1'..'9']);
end;
end;
Mehr passiert hier nicht. Der Index einer Listbox wird nicht verändert.
Im OnDrawEreignis bekommst du übrigends den Status der zu zeichnenden Zelle in "State" mitgeliefert.
Delphi-Quellcode:
if gdSelected in State then
{...}
Cool, danke.
Break bricht nur die innere Schleife ab.
Da wie im Screenshot zu sehen keine Zahl doppelt vorkommt, ist das nicht allzu tragisch.
Danke nochmal für die Antworten.