回 帖 发 新 帖 刷新版面

主题:修改已有数值的文本框能否直接覆盖原文本框的数值

在表单中有多个文本输入框,如:有一个文本框供输入数量,输入了:“1234”,输入后回过头来要修改,当该文本框获得焦点时,输入“5”,然后用鼠标离开该输入框,原输入框就会变成“4123”,但我的目的是将原来的“1234”直接改为“5”,如何实现呢?
  请各位指点,谢谢!

回复列表 (共12个回复)

沙发

用鼠标左键,从左至右移动,使数据全选,然后输入新值就行了。

板凳


谢谢一楼!这样当然可以,但多了一个动作,客户不接受。有没有用加代码或其它的方式实现上述操作呢?

3 楼

this.SelectOnEntry= .T.

4 楼


谢谢3楼的指点!我试了一下,用TAB键获得焦点时能达到目的,但用鼠标点击获得焦点还是不行,还有办法吗?
  谢谢!

5 楼

在 文本框 MouseDown 过程添加 以下两句即可

thisform.Text1.Value=0
thisform.Text1.refresh

6 楼


谢谢foxdb朋友!能多次得到您的指点,真是荣幸!
用您的方法:鼠标一点击文本框,里面原来的数值马上清零。假如用户不想修改,而无意点击那个文本框,原来的数据就没了。这样感觉也不好。
  能不能实现这种功能:鼠标点击与TAB键获得焦点的效果一样,这样就可以采用3楼的方法了!

7 楼

下列代码完全可以实现楼主的要求:
*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 楼

谢谢7楼提供的方法。
我试了一下,还是有问题。例如:当原来的文本框有“22”时,用鼠标获得该文本框焦点,假设光标在最左边,输入“3”后,还是会变成“322”,而不是所期待的"3"。
 7楼的方法是文本框用鼠标获得焦点时同时选中该文本框的所有内容,但我的文本框不能被全部选中,只选中了前半部分。因此还是出现了上述问题。
请再赐教!谢谢!

9 楼

表单 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 楼


再次谢谢FOXDB朋友!
我试了一下,很接近目标了!真佩服你有这么多的方法!
但还有一个问题,如:原文本框是数字“20”,当重新获得焦点时,文本框变成0,它显示在最右边,当我输入“3”并离开输入框时,文本框的值是“30”,而不是所期待的“3”。
   能再帮帮看一下吗?再次谢谢!

我来回复

您尚未登录,请登录后再回复。点此登录或注册