您的批评和鼓励都是我把编程无限办好的动力! 您编程时遇到困难,或遇到不顺心的事想发发牢骚尽管到这里来吧! 虽然本网力求全面,但也不能包罗万象,这些我筛选出的优秀网站连接就是对本站最好的补充! 学习编程当然也离不开书本了,这里收集大量编程书籍! 编程无限之源码超市,这里收集的代码令你意想不到的全面! 欢迎光临编程网校,这里专门收集VB/CB入门文章及技术文章! 欢迎光临编程无限!
     
       
 
当前位置:英文资料 >> System
Validation at Control-level
  资料类型: System 上传时间: 2001-02-21 阅读次数: 2864



To "automatically" upshift data, code the keypress event:

Sub Text1_KeyPress (KeyAscii As Integer)
KeyAscii = Ascii(UCase(Char(Keyascii)))
End Sub

To limit data entered to very specific values, code the keypress event:

'this is brute-force method of limiting to number but mask is easier.
Sub Text1_KeyPress (KeyAscii As Integer)
If KeyAscii = 8 Then 'Allow BACKSPACE through
Exit Sub
End If
'Only digits are valid characters.
If Chr(KeyAscii) < "0" Or Chr(KeyAscii) > "9" Then
KeyAscii = 0 'Set character to null if out of range
Beep
End If
End Sub
To Give User Feedback when they violate mask conditions, code the ValidationError event:

Sub mskID_ValidationError (InvalidText As String, StartPosition As Integer)

'Check for too many digits error. o/w user is trying to enter non-numeric.

If StartPosition = mskID.MaxLength Then
lblError.Caption = "Limit 6 digits"
Else
lblError.Caption = "Digits only"
End If
End Sub
LostFocus Code that Returns Focus to this Field and Avoids Infinite Loop

Dim ValidationInProgress as Boolean (available to all controls on Form)

Private Sub txtFirstName_LostFocus()
If Not (ValidationInProgress) Then 'ok to validate
If txtFirstName.Text = "" Then
ValidationInProgress = True
txtFirstName.SetFocus
lblError.Caption = "First Name is required."
DoEvents
ValidationInProgress = False
End If
End If
End Sub
Note: the above example is bad for usability because they do mandatory field validation at the field (rather than Form) level. How does the user "get out" if he doesn't know the value?

Validate in LostFocus, only if data is changed

Declare "IFlag" as Integer in Form’s general declaration (can reuse this variable across both events and controls).
- In GetFocus, set IFlag = 0
- In Change, set IFlag = 1
- In LostFocus, "If IFlag = 1 Then … code for when item is changed.

** you've already lost focus by the time this event fires so you'd have to set focus back to get the user to fix it. See use of a global like "validation-in-progress" above to ensure you don't get infinite loops resetting focus.

Monitor for hot-key

code KeyPress event of the Form (instead of coding it for every control on the Form)

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF2 Then
MsgBox "You Pressed F2!"
End If
End Sub
Note: the KeyPreview property determines whether Form sees keystrokes before its controls

推荐给朋友 点 评( 0 ) 返回前页 关闭此页
   
  本类最热文章排名:
  1.Icon to tray
2.VB6 Apps and Windows Vista
3.Run Time Error Handling Code
4.Printer Control
5.Printing Binary Files
6.Mouse swap buttons
7.Turns on Cap’s Lock ...
8.Mouse doubleclick time
9.Creating Screen Savers
10.Justification Of Text On A Printout
   
   
  评论:
 
 
 

 

关于本站 版权声明 联系方法
编程无限 V4.1 Copyright © 1999-2008 21code.com

京ICP备05006938号