【发布时间】:2013-05-07 17:46:40
【问题描述】:
我需要帮助解决以下问题。我有一个 dbgrid,底层查询被过滤。我想应用一个新的过滤器,但在 dbgrid 中保持相同的行号。这是我的代码:
with qrProperties do
begin
...
MyPoint:=GetBookmark;
Filter:='N<>'+IntToStr(ResultPropertyN);
Filtered:=True;
GotoBookmark(MyPoint);
end;
当它被执行时,会引发 EDBEngineError 并显示消息“找不到记录”。我的解释是书签功能不考虑过滤器,并且 GotoBookmark 过程搜索 dbgrid 中不存在的记录(由于应用了过滤器)。有没有办法使用带有过滤器的书签?
这里有更多细节。在我的应用程序中,当我双击 dbgrid 中的一行时,它会消失(由于应用了过滤器),但由于过滤,光标会移动到第一行(如果我不使用书签)。我希望它保持在相同的行号上,以便转到已删除的记录之后立即显示的记录。
【问题讨论】:
-
如果 GotoBookmark 无法找到记录,你会期待什么样的行为,因为它是一个过程而不是一个函数?