我知道执行以下操作会刷新查询。
query.Close;
query.Open;
但是在这样做之后,它将焦点设置回cxGrid上的第一条记录。
刷新查询后,有没有办法让当前记录保持选中状态?
感谢。
我做了以下事情..
procedure Tdatamodule.RefreshGrid;
var pos : tbookmark;
begin
pos := qryMainGrid.GetBookmark;
try
qryMainGrid.Close;
qryMainGrid.Open;
qryMainGrid.GotoBookmark(pos);
finally
qryMainGrid.FreeBookmark(pos);
end;
端;
但现在收到错误消息找不到数据集的书签。
我们非常感谢任何建议。
答案 0 :(得分:4)
要刷新数据集,请调用Refresh
方法并记住数据集光标位置使用书签。您通过调用GetBookmark
来查询当前光标位置的书签,刷新数据集并通过调用GotoBookmark
移至书签位置:
var
Bookmark: TBookmark;
begin
Bookmark := Query.GetBookmark;
Query.Refresh;
Query.GotoBookmark(Bookmark);
end;
您无需调用FreeBookmark
来释放Delphi版本中的书签,因为TBookmark
类型变为动态数组,因此在编译时会由编译器管理功能范围。