It appears that overriding method DrawValue that is inherited from TGanttSeries provides the most flexible approach to control drawing of individual points (gantts) by drawing directly on the ParentChart.Canvas object.
However, in my experience if there a need to model a situation where a single gantt consists of several parts that should react to mouse events, have individual marks then potentially a better approach is to provide a TGanttSeries descendent that aggregates separate TGanttSeries instances for each such part. Such TGanttSeries descendent then would be added to an instance of TChart to control the behaviour of all aggregated series components.
Here is an example of using this approach -- the adjacent gantts behave like a single one while providing an easy way to differentiate between the two parts programmaticaly (e.g. for event handling):