我知道执行以下操作会刷新查询.
query.Close;
query.Open;
Run Code Online (Sandbox Code Playgroud)
但是在这之后它将焦点设置回cxGrid上的第一条记录.
刷新查询后有没有办法让当前记录保持选中状态?
谢谢.
我做了以下......
procedure Tdatamodule.RefreshGrid;
var pos : tbookmark;
begin
pos := qryMainGrid.GetBookmark;
try
qryMainGrid.Close;
qryMainGrid.Open;
qryMainGrid.GotoBookmark(pos);
finally
qryMainGrid.FreeBookmark(pos);
end;
Run Code Online (Sandbox Code Playgroud)
结束;
但现在获取数据集未找到错误消息书签.
任何建议将不胜感激.
要刷新数据集,请调用该Refresh
方法并使用书签记住数据集光标位置。您可以通过调用查询当前光标位置的书签GetBookmark
,刷新数据集并通过调用移动到添加书签的位置GotoBookmark
:
var
Bookmark: TBookmark;
begin
Bookmark := Query.GetBookmark;
Query.Refresh;
Query.GotoBookmark(Bookmark);
end;
Run Code Online (Sandbox Code Playgroud)
您不需要FreeBookmark
在 Delphi 版本中调用释放书签,因为该TBookmark
类型变成了动态数组,因此当它超出函数范围时由编译器管理。