Я серьезно думаю, что «OnColExit» не место для того, что вы делаете.
Кроме того, описываемое вами поведение не является ошибкой. Повторно открывая набор данных, вы приземляетесь на первую запись (перемещайтесь с помощью клавиатуры вместо мыши, и вы поймете, что я имею в виду), а сетка считает, что это столбец, который был изменен.
Вы должны хотя бы попытаться остаться в той же строке, например, используя закладку. Delphi эквивалентный код будет что-то. как это;
var
Bookmark: TBookmark;
begin
Bookmark := AQ4.GetBookmark;
try
[...] // close, open the query
if AQ4.BookmarkValid(Bookmark) then
AQ4.GotoBookmark(Bookmark);
finally
AQ4.FreeBookmark(Bookmark);
end;