主题:修改已有数值的文本框能否直接覆盖原文本框的数值
有约故人来
[专家分:50] 发布于 2009-05-24 00:27:00
在表单中有多个文本输入框,如:有一个文本框供输入数量,输入了:“1234”,输入后回过头来要修改,当该文本框获得焦点时,输入“5”,然后用鼠标离开该输入框,原输入框就会变成“4123”,但我的目的是将原来的“1234”直接改为“5”,如何实现呢?
请各位指点,谢谢!
回复列表 (共12个回复)
沙发
sywzs [专家分:5650] 发布于 2009-05-24 05:29:00
用鼠标左键,从左至右移动,使数据全选,然后输入新值就行了。
板凳
有约故人来 [专家分:50] 发布于 2009-05-24 08:26:00
谢谢一楼!这样当然可以,但多了一个动作,客户不接受。有没有用加代码或其它的方式实现上述操作呢?
3 楼
qjbzjp [专家分:8830] 发布于 2009-05-24 09:42:00
this.SelectOnEntry= .T.
4 楼
有约故人来 [专家分:50] 发布于 2009-05-24 12:54:00
谢谢3楼的指点!我试了一下,用TAB键获得焦点时能达到目的,但用鼠标点击获得焦点还是不行,还有办法吗?
谢谢!
5 楼
foxdb [专家分:1830] 发布于 2009-05-24 13:27:00
在 文本框 MouseDown 过程添加 以下两句即可
thisform.Text1.Value=0
thisform.Text1.refresh
6 楼
有约故人来 [专家分:50] 发布于 2009-05-24 20:33:00
谢谢foxdb朋友!能多次得到您的指点,真是荣幸!
用您的方法:鼠标一点击文本框,里面原来的数值马上清零。假如用户不想修改,而无意点击那个文本框,原来的数据就没了。这样感觉也不好。
能不能实现这种功能:鼠标点击与TAB键获得焦点的效果一样,这样就可以采用3楼的方法了!
7 楼
qjbzjp [专家分:8830] 发布于 2009-05-24 22:09:00
下列代码完全可以实现楼主的要求:
*text的Click事件中
this.SelectedBackColor= 16711680
m_bak=this.Value
this.Value=""
this.SelLength=0
this.Value=m_bak
this.SelLength=LEN(ALLTRIM(this.Text))
8 楼
有约故人来 [专家分:50] 发布于 2009-05-25 11:42:00
谢谢7楼提供的方法。
我试了一下,还是有问题。例如:当原来的文本框有“22”时,用鼠标获得该文本框焦点,假设光标在最左边,输入“3”后,还是会变成“322”,而不是所期待的"3"。
7楼的方法是文本框用鼠标获得焦点时同时选中该文本框的所有内容,但我的文本框不能被全部选中,只选中了前半部分。因此还是出现了上述问题。
请再赐教!谢谢!
9 楼
foxdb [专家分:1830] 发布于 2009-05-26 04:35:00
表单 form1 Activate 属性过程添加如下:
public M_Textx,M_Text1
M_Textx=0 &&缓冲变量
M_Text1=0 &&文本框变量
thisform.Text1.ControlSource="M_Text1"
在 文本框 MouseDown属性 过程添加 以下两句即可
M_Textx=M_Text1
thisform.Text1.Value=0
thisform.Text1.refresh
在 文本框 Valid属性 过程添加 以下两句即可
if M_Text1=0
thisform.Text1.Value=M_Textx
thisform.Text1.refresh
endif
这样取得焦点时清零,鼠标离开时如果文本框的数据没有改变就恢复原来的值.....
10 楼
有约故人来 [专家分:50] 发布于 2009-05-28 22:38:00
再次谢谢FOXDB朋友!
我试了一下,很接近目标了!真佩服你有这么多的方法!
但还有一个问题,如:原文本框是数字“20”,当重新获得焦点时,文本框变成0,它显示在最右边,当我输入“3”并离开输入框时,文本框的值是“30”,而不是所期待的“3”。
能再帮帮看一下吗?再次谢谢!
我来回复