Just my two cents here. I have an application where I let the users add what I call properties to each record on a form. After these are defined a movable / shrinkable control appears on the form. The users can move the control around the form with the mouse or shrink or expand it as desired. This control is a grid of the available properties and their current values. The user can change any of these values just like any other grid and the records are linked to the id of the current table. In the setup of these properties I let the user specify: the display sequence in the grid, the type of field (character, date, numeric, or logical), field length, entry mask, format mask, report label, report width, report alignment, and a list of possible values for a combo box in the grid. When the grid is displayed on the form I set the input mask etc. based on the type of field, etc. and validate accordingly. I also have a class that appears on the report form to let them choose what fields to print. Another class adds the fields to be printed to the report cursor, and yet another class hacks the report when it is run to add the selected fields to the report. I added this feature after I got tired of adding fields to the table that only a few records would ever use. This way they can add most of what they need fairly easily.
Auguy
Northwest Ohio