The DateTimeIntervalChartSource which you seem to be using lacks some control of exact placement of labels. I am working on it, but do not yet have a satisfactory solution.
What you can do is to add a TListChartSource to your form and populate it with the values where you want to have a label (and a grid line - they are at the same positions). In the this routine you also add the text which will be displayed. You have to assign this ChartSource to the Source property of the bottom axis Marks, and you have to set the Marks' Style to smsLabel to see the assigned texts:
procedure TForm1.ConstructXLabels;
var
ex: TDoubleRect;
dt: TDateTime;
begin
ListChartSource1.Clear;
ex := Chart1.CurrentExtent;
dt := ex.a.x;
while dt <= ex.b.x+1 do begin
ListChartSource1.Add(trunc(dt), trunc(dt), FormatDateTime('dd"/"mm"/"yyyy"', trunc(dt)));
dt := dt + 1;
end;
Chart1.BottomAxis.Marks.Source := ListChartSource1;
Chart1.BottomAxis.Marks.Style := smsLabel;
end;
This code creates labels at midnight and assigns to them the strings for the coming day. Call this when the chart is ready, e.g. in its OnExtentChanging event.
If you want also intermediate ticks you can add a minor chart axis to the bottomaxis where you, for example, draw a tickmark every 3 hours, i.e. set the Intervals.Count of the minor axis to 24/3-1 = 7.
See the attached demo.