机房收费系统之减少代码冗余(快速清空文本框、限制字符且清空)
机房收费系统中有很多都是重复的代码,代码冗余很严重,降低了代码利用率,也浪费自己的时间去敲重复的代码。所以我们为什么不想一个办法去解决这个问题呢。懒是发明的第一推动力。
一、快速清空文本框、下拉框等等。
在清空按钮中写以下代码
Private Sub cmdClear_Click()
'Controls 集合是表示窗体或容器控件上的控件的元素的集合。
Dim ctrl As Control
'用到了For...Next循环
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then '是否为文本框TextBox
ctrl.Text = ""
End If
Next
For Each ctrl In Me.Controls
If TypeOf ctrl Is ComboBox Then '是否为下拉框comboBox
ctrl.Text = ""
End If
Next
End Sub
解释:
1.Controls 集合是表示窗体或容器控件上的控件的元素的集合。
2.用到了For…Next循环,判断控件类型
3.若是还想清空其他控件,将TextBox或者ComboBox改成你想清空的控件就行。
二、限制字符只能为数字且长度不超过6位(普遍使用于学号、卡号、金额)
添加一个模块,在模块中写以下代码
Option Explicit
Public X As Integer '文本框的字符长度
Public T As String '在模块中替代文本框
Public b As Boolean '打标签,做一个判断
Public Function text_KeyPress(KeyAscii As Integer)
'限制字符,数字
If KeyAscii >= 48 And KeyAscii <= 57 Or KeyAscii = 8 Then
Else
KeyAscii = 0
End If
'判断文本框长度
If X > 5 Then
KeyAscii = 0
MsgBox "字数超出 ", 64, "温馨提示:"
T = ""
b = True
End If
End Function
在文本框的KeyPress事件中写以下代码
Private Sub txtCardNo_KeyPress(KeyAscii As Integer)
'将文本框的长度传给X
X = Len(txtCardNo.Text)
Call mdlKeyPress.text_KeyPress(KeyAscii)
'标签
If b = True Then
txtCardNo.Text = T
b = False
End If
End Sub
解释:文本框的长度只有两种可能,一种以X<5,一种是X≥5;标签b的默认值为False,当X≥5时,b=True,清空文本框。
***只能输入汉字与字母
Private Sub txtUserID_keypress(KeyAscii As Integer)'只能输入汉字与字母
If ((KeyAscii <= -3652 And KeyAscii >= -20319) Or (KeyAscii >= 65 And KeyAscii <= 90) Or (KeyAscii >= 97 And KeyAscii <= 122) Or (KeyAscii = 32 Or KeyAscii = 8)) = False Then
KeyAscii = 0
End If
End Sub
三、快速下拉框添加内容(For…Next循环、控件数组)
'打开窗体时的加载内容
For i = 0 To 2
comboField(i).AddItem "教师"
comboField(i).AddItem "注册日期"
comboField(i).AddItem "注册时间"
comboField(i).AddItem "注销日期"
comboField(i).AddItem "注册时间"
comboField(i).AddItem "机器名"
Next
For j = 0 To 2
comboOpSign(j).AddItem ">"
comboOpSign(j).AddItem "<"
comboOpSign(j).AddItem "="
comboOpSign(j).AddItem "<>"
Next j
For n = 0 To 1
comboCombineRelation(n).AddItem "与"
comboCombineRelation(n).AddItem "或"
Next n
还没有评论,来说两句吧...