TeeChart Pro VCL/FMX教程(十五):XML導出和導入
TeeChart Pro VCL/FMX是一款主流的圖表制作工具。提供了數(shù)百種用于可視化的2D、3D圖形樣式、56種數(shù)學、統(tǒng)計和金融函數(shù),以及不限數(shù)量的坐標軸和30種調(diào)色板組件。TeeChart Pro VCL/FMX教程將會以連載的形式持續(xù)為大家?guī)鞹eeChart Pro VCL/FMX的使用方法。
本篇教程為大家?guī)淼氖?a target="_self" style="white-space: normal; color: rgb(31, 73, 125);">TeeChart Pro VCL/FMX中XML導出和導入這一節(jié),在TeeChart版本5及更高版本中,支持圖表系列數(shù)據(jù)的XML輸出;版本6及更高版本支持XML格式的數(shù)據(jù)輸入。
本教程顯示了有關以XML格式導出和導入圖表數(shù)據(jù)的詳細說明。
導出
使用圖表導出對話框,可以在設計時或運行時輕松地將圖表數(shù)據(jù)導出為XML格式:

在此對話框中,您可以選擇要導出的系列(或?qū)С鏊邢盗校约笆欠褚獙С鳇c索引(0,1,2 ...等),點文本(標簽)或顏色。復制按鈕將會生成XML文本并將其復制到Windows或Linux剪貼板;保存按鈕創(chuàng)建一個新的XML文件。
例如,可以使用Internet Explorer打開XML文件。
包含單個系列的示例XML文件
導出多個系列時,XML格式有點不同:
包含單個系列的示例XML文件
按代碼導出
TeeChart提供了一個以XML格式導出系列數(shù)據(jù)的類,該類位于TeeStore.pas單元中,其名稱為TSeriesDataXML。
保存到文件的示例:
Uses TeeStore;
with TSeriesDataXML.Create(Chart1, Series1) do
try
SaveToFile('c:\sample.xml');
finally
Free;
end;如果要導出Chart1中的所有系列,需要傳遞nil而不是在Create構(gòu)造函數(shù)的最后一個參數(shù)中傳遞Series1。
該類還提供了將XML輸出轉(zhuǎn)換為字符串的函數(shù):
var S : String; with TSeriesDataXML.Create(Chart1, Series1) do try S:=AsString; finally Free; end;
如果是有幾個屬性控制要導出的數(shù)據(jù)類型,例如是否包含點顏色:
with TSeriesDataXML.Create(Chart1, Series1) do
try IncludeColors:=True;
SaveToFile('c:\sample.xml');
finally
Free;
end;到目前為止,我們已經(jīng)看到如何生成包含TeeChart系列點的XML數(shù)據(jù)。接下來就是將這個XML導入圖表。
導入XML數(shù)據(jù)
TeeChart Pro包含一個自動加載XML數(shù)據(jù)的組件,該組件位于TeeXML.pas單元,類名稱為TTeeXMLSource。![]()
加載XML圖表所需的最小屬性是Chart和FileName。Chart屬性指示添加XML數(shù)據(jù)的位置(哪個Chart);FileName屬性也可以是Web地址(URL);Load方法啟動將XML數(shù)據(jù)加載到圖表系列中。
讓我們創(chuàng)建一個新的應用程序并刪除Chart1組件和TeeXMLSource1組件。
uses Series; procedure TForm1.FormCreate(Sender: TObject); begin RegisterTeeStandardSeries; // make sure "Line" style is loaded. TeeXMLSource1.Chart:=Chart1; TeeXMLSource1.FileName:='//www.steema.com/support/teechart/6/tutorials/xml/TeeChartSampleManySeries.xml'; TeeXMLSource1.Load; end;
//www.steema.com/support/teechart/6/tutorials/xml/TeeChartSampleManySeries.xml:
注意:在上面的示例中,可以通過添加TeeChart工具欄或?qū)eeGally單元添加到uses來省略對RegisterTeeStandardSeries的調(diào)用,它只是注冊基本的圖表樣式(線條,條形圖,餅圖等),因此XML導入過程可以根據(jù)xml文件中的系列樣式自動創(chuàng)建系列。
生成的圖表是:

從Web URL加載遠程XML文件也很簡單:
procedure TForm1.FormCreate(Sender: TObject); begin TeeXMLSource1.Chart:=Chart1; TeeXMLSource1.FileName:='//www.steema.com/SampleData.xml'; TeeXMLSource1.Load; end;

只加載一個系列
XML源組件具有SeriesNode屬性,可用于僅加載一個系列(如果XML文件包含多個系列)。
TeeXMLSource1.SeriesNode:='Series2';
加載到現(xiàn)有系列
如果要將XML文件中包含的一個系列數(shù)據(jù)加載到現(xiàn)有系列中,請設置Series屬性:
TeeXMLSource1.Series:=Series1; TeeXMLSource1.SeriesNode:='Series2';
上面的代碼將把與Series2對應的XML數(shù)據(jù)加載到Series1中。
注意:
如果系列類不同(例如,XML Series2是Line,而Series1是Bar),則最終輸出將是Series1填充零點。
為什么?
Series2的XML數(shù)據(jù)將點值定義為Y值,而Series1(Bar系列)則將點定義為Bar。
這個問題有兩種解決方案:
設置Series1 valuesource屬性以匹配XML點的名稱:
Series1.YValues.ValueSource := 'Y';
設置XMLSource組件的ValueSource屬性以匹配Series1 valuesource的名稱:
TeeXMLSource1.ValueSource := 'Y';
附加功能
TeeXMLSource組件還包括一個XMLDocument屬性,該屬性將會返回對解析和加載XML數(shù)據(jù)內(nèi)部對象的OleVariant引用。此屬性是指實現(xiàn)Microsoft的IXMLDomDocument接口的后期綁定創(chuàng)建的實例。
TeeChart能否使用早期綁定的實例來避免可能出現(xiàn)的版本不兼容的問題,具體取決于您的Windows版本,Internet Explorer版本等。
TeeXMLSource組件的另一個有用屬性是TStringList類型的XML。您可以使用此屬性來設置XML數(shù)據(jù),而不是使用FileName屬性,這樣,就不需要XML外部文件。
關注慧聚IT微信公眾號 ???,了解產(chǎn)品的最新動態(tài)及最新資訊。


QQ交談
在線咨詢

渝公網(wǎng)安備
50010702500608號

客服熱線