The BarWidthPercent is too small. The distance from one x value to the other is considered to be 100%. You have three series which share this space. BarWidthPercent is the percentage of that space given to each series (bar). So, with three series, BarWidthPercent would have to be 33.3333% to completely fill the xaxis. If you want some spacing between the bar groups, say 10%, then each bar can only get 30% --> 3 x 30% + 10% = 100%.
Now we must fix the BarOffsetPercent. By default this has the value 0 -- all bars are centered and fully overlapping at the tick mark. You must move the left most bar by one BarWidthPercent to the left, i.e. LeftSeries.BarOffsetPercent := -30. The center bar can stay at the center of the tick mark (CenterSeries.BaroffsetPercent := 0). And the right bar must be shifted by one BarWidthPercent to the right. RightSeries.BaroffsetPercent := 30;
Another important hint: TDBChartSource is pretty awkward do use because it iterates over the entire dataset again and again. Therefore, it is highly recommended to add a TListChartSource for each series and to copy the DBChartSource into the ListChartSource:
ListChartSource.Copyfrom(DBChartSource);