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.