为什么在DXDBGRID中使用过滤功能后如果刷新数据源会返回不是光标指向记录的值?(50分)

  • 主题发起人 主题发起人 zkf1001
  • 开始时间 开始时间
Z

zkf1001

Unregistered / Unconfirmed
GUEST, unregistred user!
在DXDBGRID控件中,有过滤功能,很方便。但现在却出现一问题,
如果我在程序中用过滤锁定一条记录后,如果重新关闭并激活数据源,
此时用QUERY.FIELDBYNAME('AAA').ASSTRING返回的结果不是激活数据源前的记录,
必须手工用鼠标指向其它行或列时才会返回光标指向的记录。如何解决?
 
不明白?你要返回关闭前的记录,在关闭前记往好了
 
首先你跟蹤看看﹐你關閉之前是不是鎖定就是你當前所要的記錄﹖
如果是把關鍵字段保存在一個變量里﹐然后用
很笨的方法﹐就是進行Talbe.locate('Field',變量,[]);
就可以找到關閉前所要的記錄﹗
 
var
SavePlace: TBookmark;
PrevValue: Variant;
begin
with Table1 do
begin
{ get a bookmark so that we can return to the same record }
SavePlace := GetBookmark;
{ move to prior record}
FindPrior;
{ get the value }
PrevValue := Fields[0].Value;
{Move back to the bookmark}
GotoBookmark(SavePlace);
{ Set the value }
Fields[0].Value := PrevValue;
{ Free the bookmark }
FreeBookmark(SavePlace);
end;
end;

ok!:)
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
900
SUNSTONE的Delphi笔记
S
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部