Amikor megnyomjuk a lefelé nyilat az utolsó rekordon, valójában egy Insert művelet hajtódik végre. Kapunk egy új üres sort, ami rögtön megnyílik szerkesztésre. Hogy ezt elkerüljük, be kell avatkoznunk a tábla Insert műveletébe. Ezt a BeforeInsert esemény segítségével tehetjük meg, ahol megszakítjuk a beszúrás folyamatát.
procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);
begin
if CheckLastRow then Abort;
end;
A könnyebb szemléltetés érdekében elhelyeztünk egy jelölőnégyzetet a Form-on, mellyel ki illetve be bekapcsolhatjuk az új sor hozzáadásának figyelését. Ez egy CheckLastRow nevű logikai típusú változónak ad igaz vagy hamis értéket attól függően, hogy figyelni szeretnénk-e az Insert műveletet. Amennyiben bekapcsolt állapotban van, megszakítjuk az Abort eljárás segítségével a beszúrás műveletét. Ezután a DBGrid-en figyelemmel kísérjük a billentyűlenyomásokat.
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
Begin
Megvizsgáljuk, hogy a lefelé nyíl lett-e megnyomva.
if CheckLastRow and (Key = VK_DOWN) then
begin
Amennyiben igen, a DisableControls segítségével letiltjuk a rekordok megjelenítését a Grid-ben, majd a következő rekordra mozgatjuk a mutatót.
Table1.DisableControls;
Table1.Next;
Ha ennek hatására az adattábla végére érünk, a rekordmutatót eggyel visszafelé mozgatjuk. Ellenkező esetben a Key értékét lenullázzuk és hagyjuk, hogy továbblépjen a mutató.
if Table1.Eof then
Table1.Prior
else
Key:=0;
Az EnableControls segítségével újra engedélyezzük az adatok megjelenítését.
Table1.EnableControls;
end;
end;