TeeChart Pro VCL/FMX教程(十五):XML导出和导入

TeeChart Pro功能是一个系列,几乎可以是任何系列类型,可以是应用代数函数,也可以是数据源。所有函数都派生自TTeeFunction组件并继承TeeFunction的Period属性。


    本篇教程为大家带来的是TeeChart Pro VCL/FMX中XML导出和导入这一节,在TeeChart版本5及更高版本中,支持图表系列数据的XML输出;版本6及更高版本支持XML格式的数据输入。

    本教程显示了有关以XML格式导出和导入图表数据的详细说明。

导出

    使用图表导出对话框,可以在设计时或运行时轻松地将图表数据导出为XML格式:

TeeChart导出对话框,数据选项卡。

    在此对话框中,您可以选择要导出的系列(或导出所有系列),以及是否要导出点索引(0,1,2 …等),点文本(标签)或颜色。复制按钮将会生成XML文本并将其复制到Windows或Linux剪贴板;保存按钮创建一个新的XML文件。

    例如,可以使用Internet Explorer打开XML文件。

包含单个系列的示例XML文件


    导出多个系列时,XML格式有点不同:

包含单个系列的示例XML文件


按代码导出

    TeeChart提供了一个以XML格式导出系列数据的类,该类位于TeeStore.pas单元中,其名称为TSeriesDataXML。

保存到文件的示例:

Uses TeeStore;with TSeriesDataXML.Create(Chart1, Series1) dotry  SaveToFile('c:sample.xml');finally  Free;end;

    如果要导出Chart1中的所有系列,需要传递nil而不是在Create构造函数的最后一个参数中传递Series1。

该类还提供了将XML输出转换为字符串的函数:

var S : String;with TSeriesDataXML.Create(Chart1, Series1) dotry  S:=AsString;finally  Free;end;

如果是有几个属性控制要导出的数据类型,例如是否包含点颜色:

with TSeriesDataXML.Create(Chart1, Series1) dotry  IncludeColors:=True;  SaveToFile('c:sample.xml');finally  Free;end;

    到目前为止,我们已经看到如何生成包含TeeChart系列点的XML数据。接下来就是将这个XML导入图表。

导入XML数据

    TeeChart Pro包含一个自动加载XML数据的组件,该组件位于TeeXML.pas单元,类名称为TTeeXMLSource。

 Delphi工具栏中的TeeXMLSource组件

    加载XML图表所需的最小属性是Chart和FileName。Chart属性指示添加XML数据的位置(哪个Chart);FileName属性也可以是Web地址(URL);Load方法启动将XML数据加载到图表系列中。

让我们创建一个新的应用程序并删除Chart1组件和TeeXMLSource1组件。

uses Series;procedure TForm1.FormCreate(Sender: TObject);begin  RegisterTeeStandardSeries; // make sure "Line" style is loaded.  TeeXMLSource1.Chart:=Chart1;  TeeXMLSource1.FileName:='http://www.steema.com/support/teechart/6/tutorials/xml/TeeChartSampleManySeries.xml';  TeeXMLSource1.Load;end;

http://www.steema.com/support/teechart/6/tutorials/xml/TeeChartSampleManySeries.xml:


    注意:在上面的示例中,可以通过添加TeeChart工具栏或将TeeGally单元添加到uses来省略对RegisterTeeStandardSeries的调用,它只是注册基本的图表样式(线条,条形图,饼图等),因此XML导入过程可以根据xml文件中的系列样式自动创建系列。

生成的图表是:

图表加载示例xml文件。

    从Web URL加载远程XML文件也很简单:

procedure TForm1.FormCreate(Sender: TObject);begin  TeeXMLSource1.Chart:=Chart1;  TeeXMLSource1.FileName:='http://www.steema.com/SampleData.xml';  TeeXMLSource1.Load;end;

从web url加载示例xml文件的图表。

只加载一个系列

    XML源组件具有SeriesNode属性,可用于仅加载一个系列(如果XML文件包含多个系列)。

TeeXMLSource1.SeriesNode:='Series2';

加载到现有系列

    如果要将XML文件中包含的一个系列数据加载到现有系列中,请设置Series属性:

TeeXMLSource1.Series:=Series1; TeeXMLSource1.SeriesNode:='Series2';

上面的代码将把与Series2对应的XML数据加载到Series1中。

注意:

    如果系列类不同(例如,XML Series2是Line,而Series1是Bar),则最终输出将是Series1填充零点。

为什么/p>

    Series2的XML数据将点值定义为Y值,而Series1(Bar系列)则将点定义为Bar。

    这个问题有两种解决方案:

  • 设置Series1 valuesource属性以匹配XML点的名称:

Series1.YValues.ValueSource := 'Y';
  • 设置XMLSource组件的ValueSource属性以匹配Series1 valuesource的名称:

TeeXMLSource1.ValueSource := 'Y';

附加功能

    TeeXMLSource组件还包括一个XMLDocument属性,该属性将会返回对解析和加载XML数据内部对象的OleVariant引用。此属性是指实现Microsoft的IXMLDomDocument接口的后期绑定创建的实例。

    TeeChart能否使用早期绑定的实例来避免可能出现的版本不兼容的问题,具体取决于您的Windows版本,Internet Explorer版本等。

    TeeXMLSource组件的另一个有用属性是TStringList类型的XML。您可以使用此属性来设置XML数据,而不是使用FileName属性,这样,就不需要XML外部文件。


标签:

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年6月19日
下一篇 2019年6月19日

相关推荐

发表回复

登录后才能评论