在dbgrid中屏蔽方向键

flyingsnowfox 2003-03-11 04:59:49
在dbgrid中按向下方向键,会增加一个记录
怎么样才能屏蔽向下的方向键而且还不影响我用其它事件插入记录
...全文
128 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
flyingsnowfox 2003-03-11
  • 打赏
  • 举报
回复
thanks 戴尔飞,结贴
renzhm 2003-03-11
  • 打赏
  • 举报
回复
BtnSave.CanFocus是我做的一步判断,避免了SetFocus可能产生的错误,

意义:BtnSave是否可以获得焦点。
renzhm 2003-03-11
  • 打赏
  • 举报
回复
这是我从我的程序中复制过来的,没有经过修改,你可以领会其中的含义:

1、如果焦点行在最后一条记录,并且焦点列在最后一个字段上,此时按vk_down或vk_tab,焦点

将转向按钮btnsave

2、如果焦点行不在最后一条记录,则按正常的焦点进行转移。

这段代码比较通用,适合你这样的情况,并且我一直使用这段代码

MT:是数据集的名字,Selectedindex当前焦点列,MT1.RecNo当前焦点行,

FieldCount 字段数量(列总数)
flyingsnowfox 2003-03-11
  • 打赏
  • 举报
回复
Selectedindex>=(FieldCount-1))有什么用啊
NightCloud 2003-03-11
  • 打赏
  • 举报
回复
不是BtnSave.CanFocus
是BtnSave.SetFocus,让btnSave获得焦点
qiume 2003-03-11
  • 打赏
  • 举报
回复
BtnSave.CanFocus是什么、作用?
是否能得到焦点
flyingsnowfox 2003-03-11
  • 打赏
  • 举报
回复
BtnSave.CanFocus是什么、作用?
renzhm 2003-03-11
  • 打赏
  • 举报
回复 1
在onkeydown事件中写:

if (key=VK_DOWN)and(MT1.RecNo>=MT1.RecordCount) then //判断最后一条
begin
With TDBGridEh(Sender) Do
begin
if (Selectedindex>=(FieldCount-1))and(BtnSave.CanFocus) then
BtnSave.SetFocus;
end;
abort;
end;

if (key=VK_TAB)and(MT1.RecNo>=MT1.RecordCount) then
begin
With TDBGridEh(Sender) Do
begin
if (Selectedindex>=(FieldCount-1))and(BtnSave.CanFocus) then
begin
BtnSave.SetFocus;
abort;
end;
end;
end;

我用的TDBGridEh,换成TDBGrid即可,不仅屏蔽了vk_down,而且屏蔽了vk_tab

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧