Über die Zahl in der 6.Spalte wird die Reihenfolge der Anzeige der einzelnen Zeilen gesteuert: es ist die Positionsangabe.
Wenn beim Editieren einer Zelle in der 6.Spalte eine 0 eingegeben wird, wird diese Zeile mittels DeleteRow gelöscht.
Wenn dies die letzte Zeile in diesem TStringgrid ist, wird anschliessend aber nur noch die ehemals (=vor dem Löschen) vorletzte Zeile angezeigt.
Die anderen Zeilen fehlen in der Anzeige.
Konkretes Beispiel: ich habe vier Zeilen und gebe in der letzten die 0 ein. Anschliessend wird nur die Zeile 3 angezeigt, obwohl die Zeilen 1 und 2 noch vorhanden sind.
Ein interner Testausdruck zeigt aber, dass die anderen Zeilen vorhanden sind und auch der rowCount korrekt ist.
Nur die Anzeige stimmt nicht.
Wenn ich dagegen eine andere Zeile als die letzte auf diese Art lösche, ist die Anzeige immer korrekt.
Code: Alles auswählen
procedure TFrezpos.onedit_fertig(Sender: TObject);
var
col,row:integer;
i:integer;
y:integer;
begin
col:=liste.Col;
row:=liste.Row;
y:=row;
if col=5 then
begin
i:=int_einlesen(liste.cells[5,y]);
if i=0 then
begin
test_ausdruck('rowcount =',liste.rowcount);
liste.deleterow(y);
test_ausdruck('rowcount =',liste.rowcount);
end;
liste.SortColRow(true, 5);
end;
end;
Interner Testausdruck:
rowcount =4
rowcount =3
Oder darf man innerhalb des OnEditDone die betreffende Zeile nicht löschen ?