当GetHorizAxis.Increment:= DateTimeStep [dtOneWeek]时,Weekstart上的分隔线

时间:2013-12-28 01:17:13

标签: delphi teechart

我使用D2007和Teechart v7.10标准 我想每周显示数据。 我设置了

Series1.GetHorizAxis.Increment := DateTimeStep[dtOneWeek]; 

chart1.TopAxis.minimum = //a Monday's date

问题是垂直分离线及其日期没有开启 星期一。 有没有办法强制这些标记在一周开始? 提前谢谢

使用TGantSeries

1 个答案:

答案 0 :(得分:0)

我尝试过实际版本(v2013.09),我总是在星期一得到一个带有标签的底轴,使用以下简单示例:

uses GanttCh;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Chart1.View3D:=false;
  Chart1.Legend.Visible:=false;

  Chart1.AddSeries(TGanttSeries).FillSampleValues;

  with Chart1.Axes.Bottom do
  begin
    LabelsAngle:=90;
    Increment:=DateTimeStep[dtOneWeek];
    DateTimeFormat:='ddd dd/mm/yyyy';
  end;
end;

但是,我在TeeChart v7中看到,上面的代码在标签中显示了不同的工作日,具体取决于系列中的值。然后,我能想到的唯一解决方案是使用自定义标签。即:

uses GanttCh;

procedure TForm1.FormCreate(Sender: TObject);
var tmpDate: TDateTime;
begin
  Chart1.View3D:=false;
  Chart1.Legend.Visible:=false;

  Chart1.AddSeries(TGanttSeries).FillSampleValues;

  Chart1.MarginBottom:=15;
  with Chart1.Axes.Bottom do
  begin
    LabelsAngle:=90;
    //Increment:=DateTimeStep[dtOneWeek]; //this won't take effect with custom labels
    DateTimeFormat:='ddd dd/mm/yyyy';

    tmpDate:=(Chart1[0] as TGanttSeries).StartValues.MinValue;
    while DayOfWeek(tmpDate) <> 2 do
      tmpDate:=tmpDate+1;

    Items.Clear;
    repeat
      Items.Add(tmpDate);
      tmpDate:=tmpDate+7;
    until tmpDate>=(Chart1[0] as TGanttSeries).EndValues.MaxValue;
  end;
end;

请注意,在上面的解决方案中,轴标签没有抗重叠控制