Vlad,
I have been using your new approach for some time and it has worked quite well. I am now running into a problem. When I disable the grid refreshing I receive the error INDEX DOES NOT MATCH TABLE. There isn't even an index on the table at that point. Is there a property in the grid somewhere that might be referencing an index somewhere?
Matt
>Hi!
>
>Di you know that BeforeRowColChange event is fired each time when grid is going to be reconstructed? It happens in any case include when grid alias closed, view requeried etc. despite grid visibility, focus and grid configuration. the most amazing is that putting NODEFAULT in this event for duration of data changes prevents grid reconstruction at all!
>
>Old method:
>
>
>thisform.Grid1.RecordSource=""
>...
>thisform.Grid1.RecordSource="MyAliasWithNewData"
>* than restore control sources of all columns
>
>
>Now you can do following:
>
>
>thisform.GridRefreshing = .T.
>... do data requery
>thisform.Refresh
>thisform.GridRefreshing = .F.
>
>
>In the BeforeRowColChange of grid event put following:
>
>if PEMStatus(thisform,"GridRefreshing",5) AND thisform.GridRefreshing
> nodefault
> return
>endif
>
>
>You can put above in the grid class.
>
>The most fun is that this method do not require to organize restoring of the control sources of all columns.
>
>Unfortunately, there are no way to know the reason why BeforeRowColChange event is called inside of that event to distinguish if it is called for recornstruction or movement between cells or some other actions with grid. Just use a flag for that.