0

如何定义Color特定的XLabel[i]

像这样,

Chart1.Series[0].XLabel[idxMP].FONT.Color := clBLue; 

但这不起作用。

我有 Delphi 7 和 Teechart 7.12

4

2 回答 2

0

非常感谢!但只有这一行是正确的:(没有格式)

Chart1.Axes.Bottom.Items.Add(Chart1[0].XValue[i], Chart1[0].Labels[i]).Font.Color:=myColor;

但它现在工作正常!谢谢

于 2013-01-21T13:58:13.367 回答
0

您有 2 个选项:

第一个是使用标准标签,应该如下所示:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Series1.FillSampleValues(20);
  Series2.FillSampleValues(20);
  Chart1.BottomAxis.OnDrawLabel := DrawBottomAxis;
end;

procedure TForm1.DrawBottomAxis(Sender:TChartAxis; var X,Y,Z:Integer; var Text:String;
  var DrawLabel:Boolean);
var
  lValue: Integer;
begin
  lValue := StrToIntDef(Text, -1);
  if lValue < 0 then
    Sender.LabelsFont.Color := clRed
  else
  if ((lValue mod 2) = 1) then
    Sender.LabelsFont.Color := clGreen
  else
    Sender.LabelsFont.Color := clYellow;
end;

第二个是使用自定义标签,如以下代码片段所示:

procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
    dt: TDateTime;
    myColor: TColor;
begin
  Chart1.AddSeries(TLineSeries.Create(Self));

  for i:=0 to 10 do
  begin
    dt:=Now + i;
    Chart1[0].AddXY(dt, random, DateToStr(dt));
  end;

  Chart1.Axes.Bottom.Items.Clear;

  for i:=0 to Chart1[0].Count-1 do
  begin
    if i mod 2 <> 0 then
      myColor:=clRed
    else
      myColor:=clBlack;

    Chart1.Axes.Bottom.Items.Add(Chart1[0].XValue[i], Chart1[0].Labels[i]).Format.Font.Color:=myColor;
  end;

  Chart1.Axes.Bottom.LabelsAngle:=90;
end;
于 2013-01-18T16:50:16.950 回答