Naja, dann die Routine halt noch ein bisserl (ungetestet) anpassen:
Delphi-Quellcode:
procedure TForm1.DatenInTabelleUebernehmen(MyData : TTable);
var
SavePlace: TBookmark;
SaveField: TField;
begin
MyData.DisableControls;
{ Positionsmarke abrufen, damit wir zum selben Datensatz zurückkehren können }
SavePlace := MyData.GetBookmark;
{ Focussiertes Feld merken }
SaveField := DBGrid.SelectedField;
try
{ Daten einfügen }
MyData.Append;
// Felder mit Inhalt belegen
MyData.Post;
{ Zurück zu Positionsmarke wechseln. }
MyData.GotoBookmark(SavePlace);
{ Zurück zu fokussierten Feld }
DBGrid.SelectedField := SaveField;
finally
{ Positionsmarke freigeben }
FreeBookmark(SavePlace);
end;
MyData.EnableControls;
end;
Damit sollte der Fokus zumindest wieder in dem Feld sein, in dem er vor der Aktuallisierung war. Es wird aber nicht zwingend die exakte Optik vom Zustand vor der Aktuallisierung wieder hergestellt sein.
Ansonsten schau Dir mal die Methode ScrollBy an.