>I'm working on a form that I want to use data buffering on. I can do this. TableUpdate, TableRevert, cascades if needed and all that jazz. But, we are thinking that we want to have a more global approach in our app so we can use the same schema for all of our forms and data. Maybe a DataBuffering class or something? Something we can sort of drop on a form and have it handle much of the heavy lifting. Any ideas on how to best approach this or if there are examples/samples already out there? Thanks!
All your forms should be based on the same form class. Data buffering, saving and un-doing changes, should be part of this class.
Your class hierarchy might look like this (parent on left, children on the right):
Form
|
|--- cForm
|
|--- cDataForm
|--- other forms, including dialogs, reporting forms, ...
I.e., all your forms ultimately derive from a class cForm; forms that need to manipulate data derive from cDataForm.
This data form typically has methods to:
Check if there are changes to the current record (using GetFldState()
Save changes
Undo changes
Go to: next record, previous record, first record, last record
Ask for permission to go to another record or close form. This method - which might be called .CanChange() or something - will be invoked by .NextRecord(), .PreviousRecord(), etc. It will also be invoked in .QueryUnload(), if the user tries to close the form.
Difference in opinions hath cost many millions of lives: for instance, whether flesh be bread, or bread be flesh; whether whistling be a vice or a virtue; whether it be better to kiss a post, or throw it into the fire... (from Gulliver's Travels)