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