我需要触发DBGrid的单元格得到、失去焦点的事件,怎么做?

beginer001 2003-10-17 04:47:40
如题
...全文
97 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon_z 2003-10-18
  • 打赏
  • 举报
回复
dbgrid是从TCustomGrid继承下来的,

它有col与row属性,

只不过是protected的,不能直接访问,

要处理一下,可以这样:

TDrawGrid(dbgrid1).row:=row;

TDrawGrid(dbgrid1).col:=col;

dbgrid1.setfocus;

就可以看到效果了。

1 这个方法是绝对有问题的,它会引起DBGrid内部的混乱,因为DBGrid无法定位当前纪录,如果DBGrid只读也就罢了(只读还是会出向一些问题,比如原本只能单选的纪录现在可以出现多选等等,你可以自己去试试),如果DBGrid可编辑那问题就可大了,因为当前纪录的关系,你更改的数据字段很可能不是你想象中的

2 我常用的解决办法是将上程序改为(随便设置col是安全的,没有一点问题)

Query1.first;

TDrawGrid(dbgrid1).col:=1;

dbgrid1.setfocus;

这就让焦点移到第一行第一列当中

yifanqiangqiang 2003-10-18
  • 打赏
  • 举报
回复
dbgrid.subitem.item[i]:=fouces;
这个可以吗?
我对此问题的看法不是这样的,如果这是在VF中倒是可以的,但在Delphi中需要用OnColEnter、OnColExit + (表格所连数据集的)BeforeScroll、AfterScroll来解决。
请大家以后在发回复时,尽可能的切入正题!
beginer001 2003-10-17
  • 打赏
  • 举报
回复
oncellclick 对键盘操作不起作用
angle097113 2003-10-17
  • 打赏
  • 举报
回复
oncellclick事件不行吗
beginer001 2003-10-17
  • 打赏
  • 举报
回复

加了50分,详细点好吗?
HiMrXia 2003-10-17
  • 打赏
  • 举报
回复
oncolenter;
oncolexit;
不行,搂主问的是单元格而不是单元列

用 OnColEnter、OnColExit + (表格所连数据集的)BeforeScroll、AfterScroll来产生这两个事件。

也可监视键盘和鼠标来过滤出这两个事件。
47522341 2003-10-17
  • 打赏
  • 举报
回复
oncolenter;
oncolexit;
gx 2003-10-17
  • 打赏
  • 举报
回复
gz
Alanwn 2003-10-17
  • 打赏
  • 举报
回复
dbgrid.subitem.item[i]:=fouces;
Alanwn 2003-10-17
  • 打赏
  • 举报
回复
NO.1
fouces

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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