Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Zeile aus einem StringGrid löschen (Done)


Terra23 - Di 03.06.03 15:09
Titel: Zeile aus einem StringGrid löschen (Done)
Hi ihr.

Ich weiß, es stört, wenn Leute Fragen stellen, ohne zu suchen, aber ich muß sagen: Ich habe gesucht und programmiert wie blöde, aber ernte nur Fehler. Ich habe hier im Forum zwar nach einiger Zeit eine Prozedur von Tino gefunden, aber damit komme ich einfach auch nicht klar.

Mein Problem:

Ich habe ein StringGrid mit 2 Spalten und bisher 5 Zeilen (die erste Zeile ist fix). Wenn ich nun einen Spieler eintragen will, der schon existiert, soll dieser gelöscht werden. Das klappt soweit ganz gut, jedoch will ich dann die leere Zeile auch löschen, sprich die Zeilen, die evtl. darunter sind, jeweils um einen nach oben ziehen.

Der Code sieht so aus:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
procedure TFischform.Reihen(Sender: TObject);
var I, J, K:Integer;
begin
For I:=1 To NGrid.RowCount-1 Do
    If (NGrid.Cells[0,I]='') And (NGrid.Cells[1,I]='')
    Then Begin
         J:=I;
         Fischform.Caption:='Löschen aus Zeile: '+IntToStr(J);
         Break;
         End;

For K:=J To NGrid.RowCount-1 Do
    Begin
    NGrid.Cells[0,J]:=NGrid.Cells[0,J+1];
    NGrid.Cells[1,J]:=NGrid.Cells[1,J+1];
    End;
NGrid.RowCount:=NGrid.RowCount-1;
end;



So [http://home.arcor.de/Terra23/Screenshot-01.jpg] sieht meine Tabelle aus, bevor ich die Prozedur aufrufe und so [http://home.arcor.de/Terra23/Screenshot-02.jpg] sieht sie aus, nachdem die Prozedur beendet ist (mit dem Versuch, die Zeile S-S zu löschen). Ich finde einfach den Fehler nicht. Kann mir vielleicht jemand auf die Sprünge helfen? Ich wäre euch sehr dankbar.


Christian S. - Di 03.06.03 19:02


Delphi-Quelltext
1:
2:
3:
4:
Begin
    NGrid.Cells[0,J]:=NGrid.Cells[0,J+1];
    NGrid.Cells[1,J]:=NGrid.Cells[1,J+1];
    End;

In diesem Teil sollte irgendwo mal ein K vorkommen, sonst macht die Schleifenvariable keinen Sinn.


Terra23 - Di 03.06.03 20:20

Das kann sein; das kann nicht nur so sein, es ist so. :mrgreen: Ich weiß, daß ich die benutzen muß, sonst hätte ich sie ja nicht definieren müssen. :-) Mal schauen, ob ich damit weiterkomme..

///edit -> Tausend Dank, Peter. Ich schulde dir was. :mrgreen: Ich bin ja auch dusselig. J bleibt ja als Wert bestehen und K wird hochgezählt. Das ist immer so die Sache, man überliest so einzelne Buchstaben ganz gerne mal und fährt sich dann fest. Vielen Dank für die schnelle Hilfe.. :-)