Event Sequences in Visual Basic VB6

Event Table

Action Events triggered (in order)
form load Form_Load
Form_Resize
Form_Activate
firsttabindexcontrol_GotFocus
Form_Paint
form minimize Form_Resize
form restore from icon Form_Paint (note: no Form_Resize)
form maximize Form_Resize
Form_MouseMove (note: even with no mouse movement!)
Form_Paint
form restore from max Form_Resize
form move by drag Form_MouseMove...
form resize by drag Form_MouseMove...
Form_Resize
Form_Paint
Form_MouseMove... (note 2nd 'relative' move)
form close Form_QueryUnload
Form_Unload
click in text box Text1_MouseMove... (only when Text1.Enabled is True)
(sets Text1.SelStart BEFORE MouseDown event)
Text1_MouseDown (note: before LostFocus!)
prevcontrol_LostFocus
Text1_GotFocus
Text1_MouseUp
Text1_Click
single character in text box Text1_MouseMove...
Form_KeyDown (if Form.KeyPreview is True)
Text1_KeyDown
Form_KeyPress (if Form.KeyPreview is True)
Text1_KeyPress
Text1_Change
Form_KeyUp (if Form.KeyPreview is True)
Text1_KeyUp
combo box set by listindex Combo1_Click (note: no Change event!)
single character in combo box Combo1_GotFocus
Combo1_KeyDown
Combo1_KeyPress
Combo1_Change
Combo1_KeyUp
combo box select Combo1_DropDown (note: before GotFocus!)
Combo1_GotFocus
Combo1_Click (note: no Change event!)
click on grid cell Grid1_RowColChange (note: before GotFocus!)
Grid1_MouseDown
Grid1_GotFocus
Grid1_SelChange
Grid1_MouseUp
Grid1_Click
click on Command1 while in Text1 Form_MouseMove...
Command1_MouseDown (note: before LostFocus!)
Text1_LostFocus
Command1_GotFocus
Command1_Click (note: before MouseUp!)
Command1_MouseUp
tab from Text1 to Text2 Text1_LostFocus (note: LostFocus before GotFocus)
Text2_GotFocus

 

  • When you click on a control other than the current one, the MouseDown event happens BEFORE the previous control's LostFocus event, and BEFORE the new control's GotFocus event. One valuable use of this is that you can detect the user clicking the Cancel button and programatically avoid running data validation in the LostFocus event of whatever field they were in before clicking Cancel.
  • The Click event for a Command button happens BEFORE the MouseUp event, while for most other controls, it happens AFTER the MouseUp event.
  • A number of controls have events that happen BEFORE the GotFocus event. For example, you can build or adjust the list of a ComboBox in the DropDown event before GotFocus. In the Grid control, you get a RowColChange event before the GotFocus event.
  • When you click in a TextBox, the SelStart property is set (based on the position of the mouse) before ANY other event takes place.

 

New Validation Event in VB6

Visual Basic 6.0 added a new Validate event and CausesValidation property to aid in field-by-field validation. To use the new Validate event, set the CausesValidation property to True for each field that could receive focus, which luckily is the default value for that property. As you leave a field, the Validate event is then generated before any of the focus events (such as LostFocus) are generated. This allows you to validate the data before actually losing focus from the field.

If you want to have a field on the form that the user can select without going through any validation, you can set the CausesValidation property to False for that field. For example, if you have a Help or Cancel button, you want to allow the user to select the button without having the current field validated. So set the CausesValidation property for the Help or Cancel button to False. When the user leaves a field and clicks the Help button, the user will be able to view the help without first validating the field.

The Validate event has a Cancel parameter. You can set this parameter to True if you want to keep focus on the field that is in error. Alternatively, you can set the Cancel parameter to False (the default) if you want to allow the end-user to continue entering data without immediately correcting the problem.

You may want to use the Validate event without using the Cancel parameter. If an error occurs during validation, you can set the field’s Forecolor property to red and modify the ToolTipText property to display the specific error message for that field. That tells the user something is wrong without interrupting the data entry flow.

 

 

Last modified on 14 February 2008, at 18:05