DBGrid的KeyDown事件用键盘的箭头控制纪录移动为何一次走两个?该怎么解决
DBGrid的KeyDown事件用键盘的箭头控制纪录移动为何一次走两个?
移动纪录的代码:
if key=VK_UP then
begin
self.ADO_CLIENT.Prior;
Edit1.Text :=inttostr(DBGrid1.DataSource.DataSet.RecNo);
end;
if key=VK_UP then
begin
self.ADO_CLIENT.next;
Edit1.Text :=inttostr(DBGrid1.DataSource.DataSet.RecNo);
end;
显示当前纪录的代码:
其中:
DBGrid指向的datasource组件是连接到了名为ADO_CLIENT的ADOQuery组件上,ADO_CLIENT的sql语句为SELECT * FROM tb_Client
编译能通过,运行是键盘的上下箭头都是一次走两个.并且第一条和末一条还不大对:从第一条一按向下的箭头时Edit1显示第二条,但是已经实际到了第三条.
我对DBGrid编写了单击事件用DBGrid1.DataSource.DataSet.RecNo显示位置是正确的有趣的是我对左右的箭头没编码,它却能移动一条纪录,只是Edit1不显示.
哪位高手知道问题出在哪里了?
------解决方案--------------------
DBGrid本身会处理 方向键,你又处理了一次,所以一下移动2条记录。
移动纪录的代码:
if key=VK_UP then
begin
self.ADO_CLIENT.Prior;
Edit1.Text :=inttostr(DBGrid1.DataSource.DataSet.RecNo);
end;
if key=VK_UP then
begin
self.ADO_CLIENT.next;
Edit1.Text :=inttostr(DBGrid1.DataSource.DataSet.RecNo);
end;
显示当前纪录的代码:
其中:
DBGrid指向的datasource组件是连接到了名为ADO_CLIENT的ADOQuery组件上,ADO_CLIENT的sql语句为SELECT * FROM tb_Client
编译能通过,运行是键盘的上下箭头都是一次走两个.并且第一条和末一条还不大对:从第一条一按向下的箭头时Edit1显示第二条,但是已经实际到了第三条.
我对DBGrid编写了单击事件用DBGrid1.DataSource.DataSet.RecNo显示位置是正确的有趣的是我对左右的箭头没编码,它却能移动一条纪录,只是Edit1不显示.
哪位高手知道问题出在哪里了?
------解决方案--------------------
DBGrid本身会处理 方向键,你又处理了一次,所以一下移动2条记录。