ADOQUERY中记录指针已经变化,但DBGRID显示的内容却不变(ONKEYPRESS事件不能触发)? ( 积分: 0 )

  • 主题发起人 主题发起人 SDLCY
  • 开始时间 开始时间
S

SDLCY

Unregistered / Unconfirmed
GUEST, unregistred user!
出现情况:
在DBGRID中按下光标键时或用鼠标拖动垂直滚动条,ADOQUERY中记录指针已经变化,记录已经超出DBGRID显示的记录,但DBGRID显示的内容却不变,只显示ADOQUERY.OPEN时最初显示出来的内容。
在ONKEYPRESS中:SHOWMESSAGE(INTTOSTR(ADOQUERY.RECNO)) 时,通过设置断点,发现不能触发此事件。
但是DBGRID的ONKEYDOWN事件却能触发。

哪位知道这是为什么啊?
 
有很多功能键只响应 onkeydown事件 不响应 onkeypress事件 例如光标的 上,下,左,右 还有 ctrl,alt,ins,del,home,pgup,pgon,end,prtsc,F1~F12等等 都不会触发
记住一点 响应 onkeypress的都会对dbgrid产生变化的 例如enter全选 tab切换 其余的就不说了 自己试试就知道了
onkeydown 按
onkeypress 按着有反应
 
在同一个界面中,别的DBGRID都会随着上下光标键记录发生变化,可是为什么就这一个DBGRID中记录明明已经移动,却不变化呢?
这个不变化的DBGRID是这样:它的高度只能显示10条记录,但现在有二十条记录,当用光标键从第一条移动到第十一条、十二条或其他以下的记录时,ADOQUERY中的指针已经移动,但
DBGRIDG还是只显示前十条记录,不能滚动显示第十一条或其以后的记录!
在ONKEYDOWN事件中设置:
if key=vk_return then
ShowMessage(inttostr(adoquery1.recno)+' '+adoquery1.fields.fields[0].asstring);
可以看到记录号已经变化。
 
后退
顶部