Also ich habe das jetzt anders gelöst:
Zum einen verwende ich:
DBGrid.DataSource.DataSet.EnableControls;
DBGrid.DataSource.DataSet.DisableControls;
Und dann benutze ich zwei Tabellen bei der Datenbank.
Die eine ist die "für das sichtbare Grid".
Und die 2. Tabelle, sich für das - unsichtbare Grid -. Also das erstelle ich bei der Laufzeit.
Beide filtere ich mit dem selben Filter.
Dann benutze ich die unsichtbare Tabelle, ändere, das ggf. beim Datensatz zu ändern ist und dann aktualisiere ich das
sichtbare Grid wieder und schon fehlt mir keine Zeile mehr und vor allem, die Zeile springt mir nicht mehr zur Mitte, sondern
der zu ändernde Datensatz bleibt im sichtbaren Grid dort, wo er vor der Anderung war.
Ich muss dazu aber sagen: ich ändere nur Datensätze und lösche keine oder füge neue hinzu.
(Diese Hopserei/Springerei, war ja auch schrecklich)