I never really understood the DateTimeChartSource...
Maybe you get better results if you add labels to the ListChartSource and use the ListChartSource for labelling the axis as I had suggested in the other thread.
Populate the ListChartSource in this way
procedure TForm1.FormCreate(Sender: TObject);
var
dt: TDateTime;
begin
with ListChartSource1 do
begin
dt := StrToDate('20.08.2013');
Add(dt, 1, FormatDateTime('MMM-DD (DDD)', dt));
dt := StrToDate('21.08.2013');
Add(dt, 2, FormatDateTime('MMM-DD (DDD)', dt));
dt := StrToDate('22.08.2013');
Add(dt, 3, FormatDateTime('MMM-DD (DDD)', dt));
dt := StrToDate('23.08.2013');
Add(dt, 4, FormatDateTime('MMM-DD (DDD)', dt));
dt := StrToDate('26.08.2013');
Add(dt, 5, FormatDateTime('MMM-DD (DDD)', dt));
{
Add(StrToDate('20.08.2013'),1, '20.8.2013'); //This is a Tuesday
Add(StrToDate('21.08.2013'),2, '21.8.2013');
Add(StrToDate('22.08.2013'),3, '22.8.2013');
Add(StrToDate('23.08.2013'),4, '23.8.2013');
Add(StrToDate('26.08.2013'),5, '26.8.2013'); //This is a Monday
}
end;
end;
Assign the ListChartSource to the Marks.Source of the BottomAxis. Set BottomAxis.Marks.Style = smsLabel. If you don't want the marks above the bars set Chart1BarSeries1.Marks.Visible = false.
This gets you axis labels only at the bar positions. If you want labels also at missing days use another ListChartSource and populate it by code for each date where you want an axis label.
Of course, manually populated chart source are not ideal for zooming...
To get a constant bar width, set Chart1BarSeries1.BarWidthStyle = bwPercentMin. The width, then, is determined from the closest bar distance and the BarWidthPercent parameter.