>Look at InteractiveChange.
>
>Of course, anything you do will have to be done in all controls. Therefore, you'd want to add this functionality to your base control classes. And since this code will be very similar for all classes, you should probably write a Change class that each control class instantiates and delegates to in InteractiveChange.
>
>It's not rocket science, but it's not a five minute job, either. :)
The way to go. We may need an .PrevValues[n] property array in that class, increase its dimension in each InteractiveChange, and step back in Undo - like
This.Value=this.Undo.PrevValues[this.Undo.LastValueIndex-1]
Then we'd have to store the this.Undo.LastValueIndex-1 into some this.Undo.CurrentValueIndex (in case we want a ReDo)... I've used a technique like this in VPasns solitaire for undoing moves, but, well, any .InteractiveChange is just another move by the user, so it should be at least technically compatible, if not completely isomorphous.