Как сохранить позицию в таблице после обновления (Delphi) ?

23.12.2009 - 2212 просмотрa ;)

Шли годы и я нашел как можно сделать Requery без потери позиции и без создания дурацих циклов. Собственно в Delphi даже 7 все уже давно есть.

Разработка программ для Водоканала

Код очень простой:

position2:=GetScrollPos(Form1.DBGridEh1.Handle, SB_VERT); //поза таблицы
position:=Form1.ADODataSet1.GetBookmark; //поза указателя
Form1.ADODataSet1.Requery(); //запрос
Form1.ADODataSet1.GotoBookmark(position); //вернем позу указателя
SetScrollPos(Form1.DBGridEh1.Handle, WM_VSCROLL, position2, True); // вернем позу таблицы

Тут есть важный момент, положение таблицы и указателя – это разные вещщи. С каждой работать в отдельности. Вообще этот код очень некрасив нет что не проверяет разного рода исключений, а надо бы, тем более если мы меняем сортировки, удаляем или фильтруем БД. А если просто апдейтим то можно и так.

Статьи из раздела, Видеочат рулетка