Das liegt nicht am DBGrid.
Das DBGrid zeigt immer (meist etwa mittig) den aktuellen Datensatz der Datenquelle an.
Wird bei 'ner TTable nun was an neuen Daten angefügt, so wandert der Datensatzzeiger von TTable auf den zuletzt eingefügten Datensatz. Die Anzeige im DBGrid wandert automatisch mit.
Soll im DBGrid aber diese "Wanderung" nicht nachvollzogen werden, so muss man sich vor dem Einfügen neuer Datensätze den aktuellen Datensatz merken, die Daten einfügen und dann zum gemerkten Datensatz zurückkehren.
Schau Dir bitte mal in der Delphi 7-Hilfe das Beispiel zu "GetBookmark, GotoBookmark, FreeBookmark, FindPrior, Value, OnDataChange, Bof (Beispiel)" an, eventuell kannst Du es entsprechend Deiner Bedürfnisse anpassen.
Ungetestet eventuell sowas in der Art:
Delphi-Quellcode:
procedure TForm1.DatenInTabelleUebernehmen(MyData : TTable);
var
SavePlace: TBookmark;
begin
MyData.DisableControls;
{ Positionsmarke abrufen, damit wir zum selben Datensatz zurückkehren können }
SavePlace := MyData.GetBookmark;
try
{ Daten einfügen }
MyData.Append;
// Felder mit Inhalt belegen
MyData.Post;
{ Zurück zu Positionsmarke wechseln. }
MyData.GotoBookmark(SavePlace);
{ Wert zuweisen }
{ Positionsmarke freigeben }
finally
FreeBookmark(SavePlace);
end;
MyData.EnableControls;
end;
Aufruf im Programm:
DatenInTabelleUebernehmen(DeineTTableKomponente);