Допустим что вы имеете TTable с именем Table1 и DBGrid с именем DBGrid1:
В секции модуля interface объявите переменную:
FieldLst: TStringList;
Установите свойство формы KeyPreview в TRUE
В обработчике события формы OnCreate добавьте:
FieldLst := TStringList.Create;
В обработчике события формы OnDestroy добавьте:
FieldLst.Free;
В обработчике события формы OnKeyUp добавьте:
if (ssCtrl in Shift) and (Key in [Ord('D'), Ord('d')]) thenif (FieldLst.Count > 0 ) thenbegin{Если вам необходимы все предыдущие данные полей}{for nFld := 0 to Table1.FieldCount - 1 do
Table1.Fields[nFld].AsString := FieldLst.Strings[nFld] ;}{Если вы хотите только поле, с которым сейчас имеете дело }
DBGrid1.Fields[DBGrid1.SelectedIndex].AsString := FieldLst.Strings[DBGrid1.SelectedIndex];
end ;
Обработчик события таблицы BeforeInsert должен выглядеть следующим образом:
procedure TForm1.Table1BeforeInsert(DataSet: TDataset);
var
nFld: Integer ;
bmPos: TBookMark ;
beginif (not Table1.BOF) and (Assigned( FieldLst )) thentry
bmPos := Table1.GetBookMark ;
Table1.DisableControls ;
Table1.Prior ;
FieldLst.Clear ;
for nFld := 0 to Table1.FieldCount - 1 do
FieldLst.Add( Table1.Fields[nFld].AsString ) ;
Table1.GotoBookMark( bmPos ) ;
Table1.FreeBookMark( bmPos ) ;
Table1.EnableControls ;
excepton E: EOutOfMemory do ShowMessage( E.Message ) ;
end ;
end;
Надеюсь, что это будет работать. {Обратите внимание, что при обработке
события OnKeyUp вы можете воспользоваться закомментаренными строками, которые
позволят вам с помощью комбинации клавиш Ctrl-D получить все предыдущие данные
полей. Если вы уберете этот комментарий, то не забудьте прокомментировать строку
с DBGrid1....}
Синхронизация таблицы и StringList: программное описание обеспечивает синхронизацию данных между TTable и TStringList, а также позволяет сохранять предыдущие данные полей в таблице.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS