DataGrid的焦点问题(急!!周末加班,真不爽!)

swordbroken 2003-07-06 02:52:05
我想实现下面的功能:
当Cell更新之前(BeforeColUpdate)进行输入检查,如果输入错误的话,保持输入的值不变,并全选该Cell.
可是现在的情况是,如果我用Cancel=True那么Cell的值就变成了原来的值。如果不用Cancel=True,那么就有可能输入了错误的值。
还有一个关键问题就是执行完BeforeColUpdate的代码后,焦点不能回到那个单元格了。或者说焦点还在那里,只是文本没有被选中。
请问如何解决?
...全文
35 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
swordbroken 2003-07-08
  • 打赏
  • 举报
回复
up
unrknight 2003-07-07
  • 打赏
  • 举报
回复
我也没怎么用过datagrid控件,有没有办法让datagrid控件只能行聚焦?
swordbroken 2003-07-07
  • 打赏
  • 举报
回复
行焦点应该没有吧.
DATAGRID用起来真的是不好用,可能是自己水平太次了吧.
不过必须要用这个,所以还是请各位帮一下忙

alion 2003-07-07
  • 打赏
  • 举报
回复
你说的
DataGrid1.Col = 1
DataGrid1.Row = 1
DataGrid1.SetFocus
是单元格焦点,
但是有没有行焦点?
swordbroken 2003-07-07
  • 打赏
  • 举报
回复
SendKey的问题太多了,这样的话程序有可能不稳定
swordbroken 2003-07-07
  • 打赏
  • 举报
回复
可是绑定Text的话,位置很难控制呀。

我主要就是想让它在出错后光标还是在原来的单元格里,并且内容不变为更改前的值,只是选中所有的文本等待用户处理。

比如,有一个字段,长度是2,原来的数据是“11”,现在用户输入“123”,那么我就跳出一个对话框,告诉用户输入数据过长,用户点击确定后,光标回到刚才的单元格里,数据仍然是“123”,而不是在BeforeColUpdate里执行Cancel=True之后的“11”。只是“123”被反选,用户直接从键盘输入就可以更改出错的单元格。

现在的情况是,如果用Cancel=True数据就变成了“11”,而且光标并没有回到单元格。

谢谢!
southdoor 2003-07-07
  • 打赏
  • 举报
回复
我的数据库连接都是用adodc和datagrid组合,你说的问题我觉得你还是将自己想要实现的东西告诉大家,其实修改数据库有很多方法,你可以用n个textbox或label控件绑定各个字段,然后再改变不挺方便的吗?还有你也可以用rs.movenext之类东东控制记录号。
if 输入有效 then
adodc1.refresh
elseif 输入无效 then
end sub
end if
swordbroken 2003-07-07
  • 打赏
  • 举报
回复
up
JerryLis 2003-07-06
  • 打赏
  • 举报
回复
呵,我没有这样用过,不过可以试一下SENDKEY
swordbroken 2003-07-06
  • 打赏
  • 举报
回复
我说用SetFocus的意思是,如果焦点不在DataGrid上,用下面的语句可以实现。
DataGrid1.Col = 1
DataGrid1.Row = 1
DataGrid1.SetFocus
可是现在DataGrid并没有失去焦点。

而且我觉得如果是先把焦点设到别的控件上再设回来这种方法不好!

谢谢!
swordbroken 2003-07-06
  • 打赏
  • 举报
回复
不好意思。
应该是单元格反选。
JerryLis 2003-07-06
  • 打赏
  • 举报
回复
SETFOCUS这个怎么能用在单元格呢,只能用在控件,还有就是我不清楚你单元格全选是什么??
swordbroken 2003-07-06
  • 打赏
  • 举报
回复
我试过了,新加一个Text控件的话位置很难控制,经常会和单元格不对齐。
现在的问题应该是我想让DataGrid做到单元格全选怎么办?
因为DataGrid并没有失去焦点,所以用SetFocus一定是无效的。
JerryLis 2003-07-06
  • 打赏
  • 举报
回复
不用数据绑定就用ADODB来连数据库,然后将要显示的值一个个填写进控件就可以,速度可能会慢点,但也不会太慢了,我算过5000条数据3秒吧,数据实在太多最好用分页的方法,新加一个TEXT控件专门用来更改数据,我本人认为不会太复杂了,不然也可以用DATAFORMAT来绑定列的数据类型
swordbroken 2003-07-06
  • 打赏
  • 举报
回复
再用一个Text控件就太麻烦了。
有没有别的办法?

还有,DataGrid不用数据绑定的话怎么显示数据?我也觉得没有FlexGrid好用,可是项目就要求这样,我也没有办法。

各位帮忙呀!
JerryLis 2003-07-06
  • 打赏
  • 举报
回复
一般你这样绑定数据库的方法我一般不用,因为不好用,但我可以告诉你,你可以用一个TEXT控件来解决你的问题

是有这样的问题,你要在BeforeColUpdate记录下当前的单元格,执行完后再将焦点置回去,
swordbroken 2003-07-06
  • 打赏
  • 举报
回复
怎么没有人帮我吗?

1,451

社区成员

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

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