>>Client is always right, so... BTW, it's better to use
>Interactive/ProgrammaticChange for validation purposes (see this thread
>case).
>
>I have attempted to deal with this situation in the following way (for
>textboxes). My textbox class has a custom property called changed. Initial
>value is .F. In interactive change event of textbox: this.changed = .T.,
>and in mytext.refresh: 'this.changed = .F.'. Then when I absolutely NEED
>validation before the cursor leaves the field, in the valid event of the
>box 'if this.changed and !empty(this.value) then ...(rest of validation
>code)' This allows the user to tab through a previously entered invalid or
>empty textbox (maybe he wants to fill in something else first, or cancel
>the entry). without having to come up with a valid value just to leave. The
>valid code only fires if the user has actually tried to enter or change the
>value of the field. Of course, this method needs backup validation in the
>form's save method to prevent invalid values from saving. This is all
>(IMHO) a messy solution, but nonetheless gives the best of both worlds.
>Nothing is more annoying than not being able to cancel out of a record
>change before you enter a valid value for some annoying little control. Any
>comments/ criticisms/ better suggestions?
>
>Erik
I love it. You saved my day.