Einzelnen Beitrag anzeigen

Noobmaster

Registriert seit: 18. Jul 2010
114 Beiträge
 
FreePascal / Lazarus
 
#8

AW: Kreuzworträtsel

  Alt 30. Mai 2012, 12:50

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.
  Mit Zitat antworten Zitat