| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 926 人关注过本帖
标题:数值框的处理问题!
只看楼主 加入收藏
hshuguobin
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-6-10
结帖率:100%
收藏
 问题点数:0 回复次数:10 
数值框的处理问题!
数值框默认值为0.00,怎么样才能在用户输"."之后光标自动跳到"."后面,而且将"."后面的数值进行改写
搜索更多相关主题的帖子: 数值 
2007-06-10 23:16
西山居士
Rank: 4
等 级:贵宾
威 望:11
帖 子:581
专家分:0
注 册:2007-4-21
收藏
得分:0 
Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(".") Then Text1.Text = Replace(Text1.Text, "0.00", "")
End Sub

2007-06-11 00:18
hshuguobin
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-6-10
收藏
得分:0 

在输入"."的时候,我原来是这样写的:
If KeyAscii = Asc(".") Then
If InStr(dx.Text, ".") > 0 Then
If InStr(dx.SelText, ".") = 0 Then
KeyAscii = 0
End If
End If
Exit Sub
End If
这个方法就是如果有"."就不能再输"."了
按楼上的办法好像不能达到要求!

2007-06-11 19:39
hshuguobin
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-6-10
收藏
得分:0 

有没有人帮帮我呀?

2007-06-12 19:10
西山居士
Rank: 4
等 级:贵宾
威 望:11
帖 子:581
专家分:0
注 册:2007-4-21
收藏
得分:0 
以下是引用hshuguobin在2007-6-11 19:39:14的发言:

在输入"."的时候,我原来是这样写的:
If KeyAscii = Asc(".") Then
If InStr(dx.Text, ".") > 0 Then
If InStr(dx.SelText, ".") = 0 Then
KeyAscii = 0
End If
End If
Exit Sub
End If
这个方法就是如果有"."就不能再输"."了
按楼上的办法好像不能达到要求!

你不是要在输入点之后改后面的数字吗?现在我都搞不懂你要做什么了!


2007-06-12 22:05
西山居士
Rank: 4
等 级:贵宾
威 望:11
帖 子:581
专家分:0
注 册:2007-4-21
收藏
得分:0 
再说你这代码写得也够晕的。

2007-06-12 22:07
心中有剑
Rank: 2
等 级:新手上路
威 望:5
帖 子:611
专家分:0
注 册:2007-5-18
收藏
得分:0 

"."的asc是46
不懂你的意思


2007-06-13 10:16
hshuguobin
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-6-10
收藏
得分:0 

那段代码的意思是:如果文本框里有"."的话,"."就输不进去,但是如果"."是选中的话,那么就改写原来的"."。
但是我现在的要求是:文本框的默认值为0.00,在光标停在第一个0前输入数字的话,改写"."前面的0,当用户输入"."之后,光标停在"."后面,用户继续输入数字的话,改写"."后面的0,以此类推!
如:现在光标停在第一个0前,用户输1的话,那么效果就是1.00,光标停在1后"."前,用户输12的话,那么效果就是12.00,光标停在2后"."前;用户输入"."后,光标停在"."后,如用户输入3,那么效果就是12.30,光标停在3后0前,紧接用户输入4,那么效果就是12.34,光标停在4后
具体就是这个意思!希望大家能帮帮忙!

2007-06-13 13:07
hshuguobin
Rank: 1
等 级:新手上路
帖 子:50
专家分:0
注 册:2007-6-10
收藏
得分:0 

请版主帮帮我呀!我很急呀!谢谢啦!

2007-06-13 23:36
Joforn
Rank: 6Rank: 6
等 级:贵宾
威 望:23
帖 子:1242
专家分:122
注 册:2007-1-2
收藏
得分:0 

Option Explicit

Private Sub Form_Load()
Text1.Text = "0.00"
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim I As Long, K As Long, STR1() As Byte

I = Text1.SelStart
STR1 = Text1.Text
If I * 2 > UBound(STR1) Then Exit Sub
If STR1(I * 2) = 48 Then
STR1(I * 2) = KeyAscii
Text1.Text = STR1
KeyAscii = 0
Text1.SelStart = I + 1
ElseIf KeyAscii = 46 Then
I = InStr(Text1.Text, ".")
If I Then
Text1.SelStart = I
KeyAscii = 0
End If
End If
End Sub

'注:这段程序只是基本实现了功能,但未做任何错误处理,所以在实际应用中要加上错误处理,请自行添加。

[此贴子已经被作者于2007-6-14 12:03:20编辑过]


VB QQ群:47715789
2007-06-14 09:06
快速回复:数值框的处理问题!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016491 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved