Performanz hängt von mehr als nur dem Scrollen ansich ab.
Da spielt die verbaute Hardware auch eine Rolle. Außerdem
scrollst du ja nicht durch 100e DS. Immer nur einen Schritt
vor und einen zurück und umgekehrt.
Aber das musst du selber testen.
Alles soweit gut, eingebaut, getestet und macht (fast) alles was ich will.
Dein Code muss noch ein wenig modifiziert werden, damit es auch vollständig funktioniert:
DBGrid.DataSource.DataSet.DisableControls;
// BOF:
DBGrid.DataSource.DataSet.Prior;
Btn_UP.Enabled := (NOT DBGrid.DataSource.DataSet.BOF);
>> if Btn_UP.Enabled then
DBGrid.DataSource.DataSet.Next;
// EOF:
DBGrid.DataSource.DataSet.Next;
Btn_Down.Enabled := (NOT DBGrid.DataSource.DataSet.EOF);
>> if Btn_Down.Enabled then
DBGrid.DataSource.DataSet.Prior;
DBGrid.DataSource.DataSet.EnableControls;
Tja, bleibt immer noch das Ding mit der RecordNo...