My schedule is still extremely tight -- I have just returned from one conference and
will depart to another next week.
I have taken a very brief look at your code, even without compiling it yet.
Few notes:
1) This is rather large unit. In the current state, it is more than twice the size
of the largest TAChart unit. Please consider splitting it both space-wise (i.e. into maybe two units)
and time-wise (i.e. maybe first submit some simpler version with minimal functionality, and
then full version -- this will simplify review).
2) Part of the modifications you made may be ported to the basic grid code, or simplified by
changing it. Maybe those changes should be submitted there.
3) Continuing our discussion on TChartGrid vs TChartGridLink approaches, I see now that
you method is more powerful (for example, you can modify grid behavior), but mine
is probably simpler to implement.
This "SeriesLink" is a polymorphic property of the column, i.e. depending on which type of series is selected, a different series-column-link class is created.
This is a known limitation of LCL streaming methods. It can be circumvented by grouping
polymorphic objects into a separate collection class, overriding a few virtual methods
and providing custom design-time editor.
You can look, for example, at TChart itself -- it contains a list of polymorphic series.
Another example is chart transformations.