文档章节

TeeChart Pro VCL/FMX教程(四):轴控制(下)

x
 xiaochuachua
发布于 05/15 13:48
字数 1312
阅读 6
收藏 0

下载TeeChart Pro VCL/FMX最新版本

附加轴

复制轴

    TeeChart提供5个轴与数据系列相关联:Left、Top、Bottom、Right和Depth。向图表添加新系列时,您可以定义系列应与哪些轴相关(转到“选项卡”“General”页面)。您可以使用Axis Customdraw方法在图表上的任何位置重复4个前轴中的任何一个(或全部)。请注意,此方法会复制Axis,但不会添加新的自定义轴。

    您将找到这个名为“CustAxisProject1”的示例,其中包含TeeChart示例代码:

//fill the Series for this example with random data
procedure TForm1.BitBtn1Click(Sender: TObject);
Var t:integer;
begin
  For t := 0 To 20 do
    Series1.AddXY(t, Random(100) - Random(70), '', clRed);
end;

//Put this code in the OnBeforeDrawValues() event:
procedure TForm1.Series1BeforeDrawValues(Sender: TObject);
var posaxis :Integer;
begin
  With Chart1 do
  begin
    If Axes.Left.Maximum > 0 Then
    begin
      
      //When scrolling or on zoom always keep the gridlines enclosed in the Chart rectangle
      Canvas.ClipRectangle(ChartRect);

      //Always draw the 2nd vertical Axis at the middle point of the Chart
      posaxis := (ChartRect.Left) + (ChartRect.Right - ChartRect.Left) div 2;
      Axes.Left.CustomDraw(posaxis - 10, posaxis - 20, posaxis, True);

      //Draw the 2nd Horizontal axis at the level of "10" on the vertical axis
      posaxis := (Axes.Left.CalcYPosValue(10));
      Axes.Bottom.CustomDraw(posaxis + 10, posaxis + 40, posaxis, True);

      Canvas.UnClipRectangle;
    end;
  end;
end;

Teechart

自定义轴

    在此示例中,TeeChart将绘制新轴,一个水平,一个垂直位于图表的中心。当您滚动图表(用鼠标右键拖动)时,新的垂直轴将始终保持在图表的中心,新的水平轴将垂直滚动上下移动。新轴是默认轴的精确副本。

多个自定义轴

    与PositionPercent和拉伸属性一起,可以在图表上的任何位置浮动无限轴。滚动,缩放和轴命中检测也适用于自定义创建的轴。现在可以通过图表编辑器在设计时创建额外的轴,也可以在运行时通过几行代码创建附加轴:

通过图表编辑器

    TeeChart为您提供在设计时创建自定义轴的功能,使其能够以TeeChart的Teechart格式保存。要实现此目的,请打开图表编辑器并单击“Axis”选项卡,然后选择“+”按钮以添加自定义轴。然后选择位置选项卡确保您突出显示新的自定义轴。此页面上的“Horizontal”复选框允许您将新的自定义轴定义为水平轴或将其保留为默认垂直轴。如上所述,此页面的其余部分和Axis页面中的其他选项卡可用于更改自定义轴的比例,增量,标题,标签,刻度,次刻度和位置。要将此新的自定义轴与所需的数据系列相关联,请选择“Series”选项卡,然后转到“General”页面,其中下拉组合框“Horizontal Axis”和“Vertical Axis”将允许您根据先前是否定义选择新的自定义轴它是垂直的或水平的。

通过代码

procedure TForm1.BitBtn2Click(Sender: TObject);
Var MyAxis : TChartAxis ;
begin
  MyAxis := TChartAxis.Create(  Chart1 );
  Series2.CustomVertAxis := MyAxis;

  //You can modify any property of the new created axes, such as the axis color or axis title
  With MyAxis do
  begin
    Axis.Color:=clGreen ;
    Title.Caption := 'Extra axis' ;
    Title.Font.Style:=[fsBold];
    Title.Angle := 90;
    PositionPercent := 20; //percentage of Chart rectangle
  end;
end;

    然后,您可以使用StartPosition和EndPosition属性将新轴与图表的整体关系定位。

StartPosition:=50;
EndPosition:=100;

    这些数字表示为图表矩形的百分比,其中0(零)(在垂直轴的情况下)为Top。这些属性可以应用于标准轴,以在图表中创建完全分区的“SubCharts”;。

 With Chart1.Axes.Left do
  begin
    StartPosition:=0;
    EndPosition:=50;
    Title.Caption:='1st Left Axis';
    Title.Font.Style:=[fsBold];
  end;

    以上2个编码示例与以下数据结合使用:

var t: integer;
begin
  for t := 0 to 10 do
  begin
    Series1.AddXY(t,10+t,'',clTeeColor);
    if t > 1 then
      Series2.AddXY(t,t/2,'',clTeeColor);
  end;

    将显示以下图表:

Teechart

多轴

    另一种添加自定义轴的技术如下,使用“Axis List”作为焦点,使用“List Add”,然后通过“Axis by Index”访问:

//Add data to Series:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Series1.FillSampleValues(10);
  Series2.FillSampleValues(10);
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
var
 tmpVertAxis: TChartAxis;
 tmpHorizAxis: TChartAxis;
begin
  {Add vertical Axis}
  Chart1.CustomAxes.Add;
  tmpVertAxis:=Chart1.CustomAxes[0];
  tmpVertAxis.PositionPercent:=50;
  Series1.CustomVertAxis:=tmpVertAxis;

  {Add horizontal Axis}
  Chart1.CustomAxes.Add;
  tmpHorizAxis:=Chart1.CustomAxes[1];

  tmpHorizAxis.Horizontal:=True;
  tmpHorizAxis.Axis.Color:=clGreen;
  tmpHorizAxis.PositionPercent:=50;
  Series1.CustomHorizAxis:=tmpHorizAxis;
end;

    建议在使用自定义轴时要小心,因为很容易开始用新轴填充屏幕并且无法跟踪您想要管理的轴!


轴事件

    Axis事件提供运行时灵活性,可以修改Axis标签并在Axis Clicks上为用户提供交互性。

OnClickAxis

procedure TForm1.Chart1ClickAxis(Sender: TCustomChart; Axis: TChartAxis;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  //Shows Axis point clicked when click on Bottom Axis.

  if Axis = Chart1.Axes.Bottom Then
     ShowMessage('Clicked Bottom Axis at '  + FloatToStr(Chart1.Axes.Bottom.CalcPosPoint(X)));
end;

OnGetAxisLabel

procedure TForm1.Chart1GetAxisLabel(Sender: TChartAxis;
  Series: TChartSeries; ValueIndex: Integer; var LabelText: String);
begin
  if Sender = Chart1.Axes.Bottom Then
     Case StrToInt(FormatDateTime('mm', StrToDate(LabelText))) of
       1,2,3 : LabelText := '1st Qtr';
       4,5,6 : LabelText := '2nd Qtr';
     end;
end;

OnGetNextAxisLabel

procedure TForm1.Chart1GetNextAxisLabel(Sender: TChartAxis;
  LabelIndex: Integer; var LabelValue: Double; var Stop: Boolean);
begin
  Stop:=False;

  if Sender = Chart1.Axes.Bottom Then
  begin
    if LabelValue>=5 then LabelValue:=LabelValue+5
                     else LabelValue:=5;
  end
  else
    Stop:=True;

end;

    以上示例将开始在每5个点的底轴标记处标记为'5'。其他轴标签不受影响。

查看Teechart.Net系列教程>>

本文转载自:http://www.teechart.net/docs/teechart/vclfmx/tutorials/UserGuide/Tutorials/tutorial4.htm#Addition...

x
粉丝 0
博文 225
码字总数 49214
作品 0
私信 提问
Steema Software将携TeeChart VCL年度版参加“ITDevCon 2013”

11月14、15日,“ITDevCon 2013”将在意大利城市维罗那举行,西班牙厂商Steema Software将带着旗下著名图表控件TeeChart VCL参加。Steema Software表示,他们很高兴参加“ITDevCon 2013”,他...

牛奶哎营养
2013/10/24
0
0
TeeChart Pro VCL/FMX教程(六):使用系列(二)

下载TeeChart Pro VCL/FMX最新版本 在图表上混合系列类型 TeeChart Pro提供了一个空的Chart Canvas作为数据系列的背景。这意味着没有预定义图表类型。您可以将所需的图表类型定义为要显示的系...

xiaochuachua
05/27
0
0
使用跨平台图表控件TeeChart如何从DAT或TEXT文件中导入数据

大多数开发人员在使用TeeChart进行开发的时候,都需要访问包含在文本文档中的一些数据,本次教程将详细讲解如何去实现这一步骤。 文本文件通常包含使用空格键或者是TAB键分隔开的数字和文字:...

裸奔的火腿肠
2014/02/18
0
0
TeeChart Pro VCL/FMX教程(五):图例设计

下载TeeChart Pro VCL/FMX最新版本 图例控件 样式选项卡 可以通过图表编辑器,图表选项卡,图例页面访问图例参数。 图例样式 图例默认样式“自动”将在图表中只有一个系列时将系列点值放入图...

xiaochuachua
05/21
0
0
TeeChart Pro VCL/FMX教程(七):使用函数(一)

下载TeeChart Pro VCL/FMX最新版本 函数类型 函数特点 TeeChart Pro功能是一个系列,几乎可以是任何系列类型,应用代数函数,数据源是另一个图表系列。 所有函数都派生自TTeeFunction组件并继...

xiaochuachua
05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

数据库管理哪家强?Devart VS Navicat 360°全方位对比解析

今天小编向大家推荐的是两个开发环节的主流数据库管理品牌,那么你知道这两款数据库管理软件品牌与 数据库引擎配套的管理软件有什么区别吗?小编这就360°全方位为您解答: ★ 品牌介绍 Deva...

FILA6666
30分钟前
2
0
Leetcode PHP题解--D107 453. Minimum Moves to Equal Array Elements

D107 453. Minimum Moves to Equal Array Elements 题目链接 453. Minimum Moves to Equal Array Elements 题目分析 给定一个数组,对数组中的N-1个数组每次加1,返回最少需要多少步才能使得...

skys215
32分钟前
1
0
Spring注解——同一接口有多个实现类,如何注入

https://blog.csdn.net/u010476994/article/details/80986435

Java搬砖工程师
36分钟前
1
0
java高并发(二)并发与高并发基本概念

并发 同时拥有两个或者多个线程,如果程序在单核处理器上运行,多个线程将交替地换入或者换出内存,这些线程是同时“存在”的,每个线程都处于执行过程中的某个状态,如果运行在多核处理器上...

Vincent-Duan
40分钟前
7
0
Fundebug:JavaScript插件支持错误采样

Fundebug的付费套餐主要是根据错误事件数制定的,这是因为每一个发送到我们服务器的事件,都会消耗一定的CPU、内存、磁盘以及带宽资源,尤其当错误事件数非常大时,会对我们的计算资源造成很...

Fundebug
40分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部