TeeChart Pro VCL/FMX教程(十五):XML導(dǎo)出和導(dǎo)入
TeeChart Pro VCL/FMX是一款主流的圖表制作工具。提供了數(shù)百種用于可視化的2D、3D圖形樣式、56種數(shù)學(xué)、統(tǒng)計(jì)和金融函數(shù),以及不限數(shù)量的坐標(biāo)軸和30種調(diào)色板組件。TeeChart Pro VCL/FMX教程將會(huì)以連載的形式持續(xù)為大家?guī)?lái)TeeChart Pro VCL/FMX的使用方法。
點(diǎn)擊下載TeeChart Pro VCL/FMX最新試用版
本篇教程為大家?guī)?lái)的是TeeChart Pro VCL/FMX中XML導(dǎo)出和導(dǎo)入這一節(jié),在TeeChart版本5及更高版本中,支持圖表系列數(shù)據(jù)的XML輸出;版本6及更高版本支持XML格式的數(shù)據(jù)輸入。
本教程顯示了有關(guān)以XML格式導(dǎo)出和導(dǎo)入圖表數(shù)據(jù)的詳細(xì)說(shuō)明。
導(dǎo)出
使用圖表導(dǎo)出對(duì)話框,可以在設(shè)計(jì)時(shí)或運(yùn)行時(shí)輕松地將圖表數(shù)據(jù)導(dǎo)出為XML格式:
在此對(duì)話框中,您可以選擇要導(dǎo)出的系列(或?qū)С鏊邢盗校?,以及是否要?dǎo)出點(diǎn)索引(0,1,2 ...等),點(diǎn)文本(標(biāo)簽)或顏色。復(fù)制按鈕將會(huì)生成XML文本并將其復(fù)制到Windows或Linux剪貼板;保存按鈕創(chuàng)建一個(gè)新的XML文件。
例如,可以使用Internet Explorer打開(kāi)XML文件。
包含單個(gè)系列的示例XML文件
導(dǎo)出多個(gè)系列時(shí),XML格式有點(diǎn)不同:
包含單個(gè)系列的示例XML文件
按代碼導(dǎo)出
TeeChart提供了一個(gè)以XML格式導(dǎo)出系列數(shù)據(jù)的類,該類位于TeeStore.pas單元中,其名稱為TSeriesDataXML。
保存到文件的示例:
Uses TeeStore; with TSeriesDataXML.Create(Chart1, Series1) do try SaveToFile('c:\sample.xml'); finally Free; end;
如果要導(dǎo)出Chart1中的所有系列,需要傳遞nil而不是在Create構(gòu)造函數(shù)的最后一個(gè)參數(shù)中傳遞Series1。
該類還提供了將XML輸出轉(zhuǎn)換為字符串的函數(shù):
var S : String; with TSeriesDataXML.Create(Chart1, Series1) do try S:=AsString; finally Free; end;
如果是有幾個(gè)屬性控制要導(dǎo)出的數(shù)據(jù)類型,例如是否包含點(diǎn)顏色:
with TSeriesDataXML.Create(Chart1, Series1) do try IncludeColors:=True; SaveToFile('c:\sample.xml'); finally Free; end;
到目前為止,我們已經(jīng)看到如何生成包含TeeChart系列點(diǎn)的XML數(shù)據(jù)。接下來(lái)就是將這個(gè)XML導(dǎo)入圖表。
導(dǎo)入XML數(shù)據(jù)
TeeChart Pro包含一個(gè)自動(dòng)加載XML數(shù)據(jù)的組件,該組件位于TeeXML.pas單元,類名稱為TTeeXMLSource。
加載XML圖表所需的最小屬性是Chart和FileName。Chart屬性指示添加X(jué)ML數(shù)據(jù)的位置(哪個(gè)Chart);FileName屬性也可以是Web地址(URL);Load方法啟動(dòng)將XML數(shù)據(jù)加載到圖表系列中。
讓我們創(chuàng)建一個(gè)新的應(yīng)用程序并刪除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:
注意:在上面的示例中,可以通過(guò)添加TeeChart工具欄或?qū)eeGally單元添加到uses來(lái)省略對(duì)RegisterTeeStandardSeries的調(diào)用,它只是注冊(cè)基本的圖表樣式(線條,條形圖,餅圖等),因此XML導(dǎo)入過(guò)程可以根據(jù)xml文件中的系列樣式自動(dòng)創(chuàng)建系列。
生成的圖表是:
從Web URL加載遠(yuǎn)程XML文件也很簡(jiǎn)單:
procedure TForm1.FormCreate(Sender: TObject); begin TeeXMLSource1.Chart:=Chart1; TeeXMLSource1.FileName:='http://www.steema.com/SampleData.xml'; TeeXMLSource1.Load; end;
只加載一個(gè)系列
XML源組件具有SeriesNode屬性,可用于僅加載一個(gè)系列(如果XML文件包含多個(gè)系列)。
TeeXMLSource1.SeriesNode:='Series2';
加載到現(xiàn)有系列
如果要將XML文件中包含的一個(gè)系列數(shù)據(jù)加載到現(xiàn)有系列中,請(qǐng)?jiān)O(shè)置Series屬性:
TeeXMLSource1.Series:=Series1; TeeXMLSource1.SeriesNode:='Series2';
上面的代碼將把與Series2對(duì)應(yīng)的XML數(shù)據(jù)加載到Series1中。
注意:
如果系列類不同(例如,XML Series2是Line,而Series1是Bar),則最終輸出將是Series1填充零點(diǎn)。
為什么?
Series2的XML數(shù)據(jù)將點(diǎn)值定義為Y值,而Series1(Bar系列)則將點(diǎn)定義為Bar。
這個(gè)問(wèn)題有兩種解決方案:
設(shè)置Series1 valuesource屬性以匹配XML點(diǎn)的名稱:
Series1.YValues.ValueSource := 'Y';
設(shè)置XMLSource組件的ValueSource屬性以匹配Series1 valuesource的名稱:
TeeXMLSource1.ValueSource := 'Y';
附加功能
TeeXMLSource組件還包括一個(gè)XMLDocument屬性,該屬性將會(huì)返回對(duì)解析和加載XML數(shù)據(jù)內(nèi)部對(duì)象的OleVariant引用。此屬性是指實(shí)現(xiàn)Microsoft的IXMLDomDocument接口的后期綁定創(chuàng)建的實(shí)例。
TeeChart能否使用早期綁定的實(shí)例來(lái)避免可能出現(xiàn)的版本不兼容的問(wèn)題,具體取決于您的Windows版本,Internet Explorer版本等。
TeeXMLSource組件的另一個(gè)有用屬性是TStringList類型的XML。您可以使用此屬性來(lái)設(shè)置XML數(shù)據(jù),而不是使用FileName屬性,這樣,就不需要XML外部文件。
關(guān)注慧聚IT微信公眾號(hào) ???,了解產(chǎn)品的最新動(dòng)態(tài)及最新資訊。