加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 刷新Query / cxGrid而不会丢失所选记录

发布时间:2020-12-15 04:14:06 所属栏目:大数据 来源:网络整理
导读:我知道执行以下操作会刷新查询. query.Close;query.Open; 但是在这之后它将焦点设置回cxGrid上的第一条记录. 刷新查询后有没有办法让当前记录保持选中状态? 谢谢. 我做了以下…… procedure Tdatamodule.RefreshGrid;var pos : tbookmark;beginpos := qryMa
我知道执行以下操作会刷新查询.
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;

结束;

但现在获取数据集未找到错误消息书签.

任何建议将不胜感激.

解决方法

要刷新数据集,请调用 Refresh方法并记住数据集光标位置使用书签.您通过调用 GetBookmark查询当前光标位置的书签,刷新数据集并通过调用 GotoBookmark移动到书签位置:
var
  Bookmark: TBookmark;
begin
  Bookmark := Query.GetBookmark;
  Query.Refresh;
  Query.GotoBookmark(Bookmark);
end;

您不需要调用FreeBookmark来释放Delphi版本中的书签,因为TBookmark类型变为动态数组,因此当编译器超出函数范围时由编译器管理.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读