>>Carlos, you can store the record number of the active row in a form property, and compare the stored value with the new one in AfterRowColChange. If the row is changed, go to the old one, do your calculations then return to the new one and store the value. There's probably a simpler way - I'll think about it.
>>
>>Barbara
>
>Barbara, the problem is biggest: each time the user adds an item and validates it with the command button, i ask him to save changes, if yes =tableupdate(), if not =tablerevert(). With rowbuffering that's not possible. In the aftercolchange event, record has yet updated and i can't revert.
>If the user changes values of a record, i need to know the oldest values via oldval(). With rowbuffering, in the aftercolchange that's not possible.
Carlos,
When using beforerowcolchange (a class of mine was for that but under revision now) besides key capturing you could capture mouse with mdown() + mcol, mrow. Complex for the moment I try to classify it. If your VFP version uses Spanish messages (I can't use because there is no Turkish version) then only table valid could handle your situation.
Another thing I do is to use table buffering instead of row buffering. And finally you could keep all the editing in a transaction and therefore could rollback even all tableuodated.
Cetin