请问在DBgrid中,如何让焦点移到指定的行与列当中?

wuhc99 2000-01-02 07:08:00
...全文
333 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
光明山人 2000-01-06
  • 打赏
  • 举报
回复
其实可以在Query1的BeforePost事件中检查是否能保存,如果不能保存,那你可以引发异常或终止;
如果你要控制不增加记录,可在BeforeInsert中终止。你也可以有条件地进行。
另外可以在OnNewRecord事件中可以为字段赋默认数据。
wuhc99 2000-01-03
  • 打赏
  • 举报
回复
我的问题主要是这样的,其中数据库A有 编号 姓名 年龄 地址
数据库B有 编号 姓名 语文 数学 还有一个计算字段总分
两个数据库的编号是一样的,DBGrid显示数据库B
编号 姓名 语文 数学 总分
我想在DBGrid中的编号输入后从数据库A中找到该编号,并在DBGrid中显示出姓名
在语文 数学输入后显示出总分,由于总分是语文加数学得来的,当语文或数学
输入不当或没的输入时很容易出错。而在DBGrid中增加记录时,按向下键时可
增加一个记录,但会出现只的没有编号或没的姓名的记录,
我该如何让整个记录输入完整后才允许增加记录?
wuhc99 2000-01-03
  • 打赏
  • 举报
回复
接受
Firing_Sky 2000-01-03
  • 打赏
  • 举报
回复
就是这样的,先移动当前纪录至指定的纪录,再
TDrawGrid(dbgrid1).col:=x;
barton 2000-01-03
  • 打赏
  • 举报
回复
寻找行直接操作表指针,寻找列用amo的用法。
Firing_Sky 2000-01-02
  • 打赏
  • 举报
回复
1 这个方法是绝对有问题的,它会引起DBGrid内部的混乱,因为DBGrid无法定位当前纪录,如果DBGrid只读也就罢了(只读还是会出向一些问题,比如原本只能单选的纪录现在可以出现多选等等,你可以自己去试试),如果DBGrid可编辑那问题就可大了,因为当前纪录的关系,你更改的数据字段很可能不是你想象中的
2 我常用的解决办法是将上程序改为(随便设置col是安全的,没有一点问题)
Query1.first;
TDrawGrid(dbgrid1).col:=1;
dbgrid1.setfocus;
这就让焦点移到第一行第一列当中
amo 2000-01-02
  • 打赏
  • 举报
回复
可以去大富翁看看:www.gislab.ecnu.edu.cn/delphibbs

dbgrid是从TCustomGrid继承下来的,
它有col与row属性,
只不过是protected的,不能直接访问,
要处理一下,可以这样:
TDrawGrid(dbgrid1).row:=row;
TDrawGrid(dbgrid1).col:=col;
dbgrid1.setfocus;
就可以看到效果了。

5,392

社区成员

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

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