Recent versions of the Delphi IDE brought us the Data Explorer, but a few features of the early days are still unparalleled. One of them, which was good mostly for demos, was the database form wizard. A couple of years ago I almost finished porting my own version of it (one that I wrote ages ago with the help of Bob Swart) to dbExpress and the new Open Tools API. But, again, this is something you'd rarely use for real development.

The old-time database oriented tool I really miss from time to time is the Data Dictionary. For those of you who never used it, this was a collection of extended metadata, including information like integer value ranges, input masks, constraints, display masks, choice of visual component that you could associate to each table of your database. These rules would apply when a field of the table was extracted using a query. By dragging fields from the fields editor to a form, not only would you have the proper display and input rules automatically tied to the field, but Delphi could even place a component of the type you selected in the Data Dictionary, like a DBComboBox or a DBListBox instead of a classic edit box. If you are interested in understanding how this tool worked, I can look for a detailed description in one of my old Delphi books and post it here.

Now the funny thing is I discussed this specific feature with a couple of members of the Delphi R&D team while I was in Scotts Valley last month, even without knowing of the acquisition plans. Now having Delphi as an Embarcadero tool, and with the option of including more database-management features in the product, I think it would be extremely relevant to resume (or recreate, as this was a BDE-based tool) the Data Dictionary in a more modern form, but with that kind of easy-to-use, pragmatic-oriented, fully-IDE-integrated approach that I liked a lot.

If any of you used the Data Dictionary in the early days of Delphi, I'd love to know if you liked it and what was your overall impression...

I don't want Delphi to become a sort of database-CASE tool (that would be a total nonsense) but embedding some of those ideas, and also database-application synchronization features would be very valuable. For example, can we have a TDataSet that lets us have a few persistent fields and dynamically adds the extra fields of a resulting dynamic query? But I'm digressing...