I'm presenting a couple of sessions at CodeRage this week. The first is, called "The technology of the Quantum Grid" which will go live at 1pm PDT, Tuesday Sept 8th.
This session is about how the QuantumGrid (since v4) does some Object Inspector magic to enable developers to specialize components by allowing you to dynamically add sub-components - it's a very nice way of extending a class in many diverse directions while keeping the property noise to a minimum.
You can see this happening when you add a column to a grid and select its Properties property. To see this drop an empty grid on a form, click on ‘Customization’ and add a column to the GridDBTableView and click on it and you will see the Column object in the Object Inspector.

Notice that the Properties Property is a regular drop down editor, this is the site that an editor class for all cells in this column will be defined. If you click the drop down button you will see the list of available editor classes that can be used, these can be editors from the Express Editors package, or even your own descendants that you have registered with the Grid architecture.

Now if you actually select a class, let’s say the CalcEdit class, something special happens to the Properties property. It changes into a subcomponent property of the class that was selected in the Dropdown.

In this example we now have the class name CalcEdit in the Properties property and since this is now a subcomponent property we also have all the properties (and events if you look at the events page) specific to just that class. In effect we have a container class called TcxGridDBColumn that we can specialize with any of a number of utility classes simply my selecting the type from a drop down.
If you were to drop down and select a different element, say a CurrencyEdit you would then see all the properties and events specific to that class.
This is a very powerful way to build component specialization by delegation to contained classes, and represents a new way of using the Delphi Object Inspector to improve in place customization of classes, and reduce the clutter of components in the Delphi Palette. Now you don’t have to have different column classes for each type of Editor, you have just one generic column class that can embed and delegate to custom editors.
Want to add the same kind of functionality to your own components?
Come to my CodeRage session at 1pm PDT, on Tuesday the 8th of September (sign up here ) ... and I'll show you how. 