I could not run your demo because I do not use your report engine. (Please try to keep demos as simple as possible).
But I could see in the lfm file that the x values of the bar series are not equidistant: 2001, 2002, 2003, 2006. In its default settings, the BarSeries calculates the bar widths on the basis of
BarWidthPercent in which the "percent" refers to the distance to the next (or previous?) data point. So, when the x values do not have the same distance the bars will vary in width. To adjust the bars to equal widths you must set the
BarWidthStyle to
bwPercentMin which looks for the smallest x value distance and calculates the widths of all bars based on this value.
Alternatively to changing the BarWidthStyle you can also add "empty" values at the missing years, 2004 and 2005:
ListChartSourc1.Add(2001, 2, 'Farm1');
ListChartSource1.Add(2002, 50, 'Farm2');
ListChartSource1.Add(2003, 9, 'Farm4');
ListChartSource1.Add(2004, NaN); // <--------- This is a "missing" value
ListChartSource1.Add(2005, NaN);
ListChartSource1.Add(2006, 50, 'Farm3');
You must add unit math to the uses clauses to get access to NaN ("not a number").