>>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
>
>Cetin,
>I'ml thinking about table valid. May i issue 'tablerevert' from table valid event ?. Table buffering is what i'm using now, but we think that's reducing performance.
Never tried but think as no you can't because the valid is for the current record and might produce side effects. Instead of directly using valid, you could issue
IF !empty(dbgetprop(this.recordsource,"Table","RuleExpression"))
if !evaluate(dbgetprop(this.recordsource,"Table","RuleExpression"))
=tablerevert(.f.,this.recordsource)
endif
endif
or directly return .f. from tablevalid if message is not annoying (in Spanish I mean). Carlos buffering doesn't reduce performance considerably. I couldn't follow the whole thread but did you use "activerow" anywhere in this grid (ie: as a RO controlsource)? It's the most performance penalty I could find for grids. When I first used it and table grow to some large amount users would nearly go for a coffe break after pressing up-down arrows.
Cetin