Detect whether a field on a form has been edited

Detect whether a field on a form has been edited

Many tip & trick collections report that you can learn if the contents of a text box has been modified by sending a EM_GETMODIFY message to the control. Actually, getting this information is much more simple. Just test the DataChange property: if non zero the field has been modified since the form was loaded.

You might believe that the DataChange property is only active when the text box is bound to a Data control. This is not true, though, so you can test, set and reset this property using simple Visual Basic statements. For instance, you can understand if the user modified any value on the form using this simple function:

Function RecordChanged(Optional reset As Boolean) As Boolean    Dim ctrl As Control    ' we need this because not all    ' controls support DataChanged property    On Error Resume Next    For Each ctrl In Screen.ActiveForm.Controls        RecordChanged = RecordChanged Or ctrl.DataChanged        ' reset the DataChanged property if so requested        If reset Then ctrl.DataChanged = False    NextEnd Function

You can optionally pass a True argument if you wish to reset to False the DataChange property for all the controls on the form. Note that this routine is also affected by check box controls and all those controls that expose the DataChanged property.


Share the Post: