Forum: Algorithmen, Datenstrukturen und Klassendesign
by Noobmaster,
31. Mai 2012
Die innere Schleife kann ich ja mit "break" beenden. Aber wie beende ich die äußere Schleife auch noch in der if-Bedingung? Muss ich dann zweimal "break" setzen?
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Noobmaster,
31. Mai 2012
//Alle Kästchen nach der Nummer durchsuchen
for i := 0 to SGridKreuzwort.ColCount - 1 do
for j := 0 to SGridKreuzwort.RowCount - 1 do
if SGridKreuzwort.Cells = FrageNr then
begin
SGridKreuzwort.OnSelectCell := nil; //Verhindern, dass OnSelectCell sofort ausgeführt wird
SGridKreuzwort.Col := (i + Horizontal);
...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Noobmaster,
30. Mai 2012
Danke für die Anregungen :-). Ich hab die EinProzeduren-Lösung schon eingebaut. Das mit dem blassroten Einfärben hab ich eh noch vor, aber erst muss der Rest mal laufen :-D.
Ich glaube, ich habe das Problem nach vielen vielen Debuggerschritten nun lokalisiert:
SGridKreuzwort.Col := (i + Horizontal);
SGridKreuzwort.Row := (j + Vertikal);
Beim Setzen von...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Noobmaster,
30. Mai 2012
//
//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
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Noobmaster,
30. Mai 2012
for i := 0 to SGridKreuzwort.ColCount - 1 do
for j := 0 to SGridKreuzwort.RowCount - 1 do
if SGridKreuzwort.Cells = FrageNr then
begin
SGridKreuzwort.Col := (i + Horizontal);
SGridKreuzwort.Row := (j + Vertikal);
{SGridKreuzwort.Update;
SGridKreuzwort.Repaint;}
break; //Schleife abbrechen, da Kästchen...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Noobmaster,
30. Mai 2012
Der Code
//
//TForm1.GeheZuFrage: Markiert das erste Feld der gesuchten Frage (markiert in Listbox)
//
procedure TForm1.GeheZuMarkierterFrage(var pListBox: TListBox);
var
i,j: Integer;
FrageNr: String;
Vertikal: Integer;
Horizontal: Integer;
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Noobmaster,
30. Mai 2012
Genau das habe ich ja getan. Aber obwohl ich das Programm schrittweise ablaufen lasse, finde ich nicht die Fehlerstelle.
Und wie gesagt, der Fehler tritt nur auf, wenn man eine Frage auswählt, die in beiden Listboxen vorkommt. Das einzige, was ich zusätzlich weiß ist, dass er in diesem Fall zwar das richtige Kästchen findet und auswählt (Stringgrid.Row := richtig, Stringgrid.Col := richtig), im...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by Noobmaster,
29. Mai 2012
Hallo Leute,
mein Kreuzwortprogramm macht nicht das, was es tun soll.
Ein Screenshot befindet sich im Anhang zum besseren Verständnis.
Die obere Listbox enthält alle horizontalen, die untere alle vertikalen Fragen.
Wählt man einen Eintrag aus, so springt das rote Quadrat auf dem Stringgrid in fast allen Fällen in die richtige Zelle des Stringgrids:
//
//TForm1.GeheZuFrage: Markiert...