TeeChart For VCL/FMX V2017使用教程:第十五章 - XML導出和導入

前言

        TeeChart 5及其後來版本支持圖表序列數據的XML輸出。

        6及其後來版本支持XML格式的數據輸入。

        本教程展示了關於以XML格式導出和導入圖表數據的詳細講解。

15.1 導出

在設計時或運行時使用圖表導出對話框,圖表數據可以很容易地導出爲XML格式:


            圖1TeeChart對話框,data(數據)選項卡標籤。

        在這個對話框中,您可以選擇要導出哪個序列(或者“all”導出所有系列),以及您是否想要導出Point Index(點索引)(012…等等)Point Labels(點文字-標籤)Point Colors(點顏色)。

        “Copy”按鈕生成XML文本並將其複製到WindowsLinux剪貼板。“Save”按鈕創建一個新的XML文件。

        with Internet Explorer. 例如,可以使用InternetExplorer打開XML文件,。

        包含單個序列的示例XML文件

        在導出多個序列時,XML格式有一點不同:

        包含多個序列的示例XML文件

15.1.1 導出代碼

TeeChart提供了一個以XML格式導出序列數據的類。

這個類位於TeeStore.pas單元,它的名字是TSeriesDataXML

保存文件的例子:

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

        如果您想要導出Chart1中的所有序列,請在Create構造函數的最後一個參數中傳遞傳遞“nil”,而不是Series1

        這個類還提供了一個函數來將XML輸出轉換成字符串:

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

一些屬性控制了要導出的數據類型,例如,如果包含/不包含point colors(點顏色):

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

        到目前爲止,我們已經瞭解瞭如何生成包含TeeChart序列點的XML數據。

        現在我們來做相反的工作,將這個XML導入到圖表中。

15.2 XML數據導入

TeeChart Pro包含一個自動加載XML數據的組件。

該組件駐留在TeeXML.pas單元,類名是TTeeXMLSource

2,在Delphi工具欄中的TeeXMLSource組件。

         加載XML圖表所需的最少屬性是“Chart(圖表)”和“FileName(文件名)”。

        圖表屬性指示在哪裏(哪個圖表)添加XML數據。文件名屬性也可以是一個web地址(URL)

        Load方法開始將XML數據加載到圖表序列中。

        讓我們創建一個新的應用程序,並終止一個Chart1組件和一個TeeXMLSource1組件。

uses Series;
procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterTeeStandardSeries; //確保“Line(線)”樣式被加載。
  TeeXMLSource1.Chart:=Chart1;
  TeeXMLSource1.FileName:='http://www.steema.com/support/teechart/6/tutorials/xml/TeeChartSampleManySeries.xml';
  TeeXMLSource1.Load;
end;

      注意:在上面的示例中,通過添加TeeChart工具欄或添加TeeGally單元到“Uses”引用中,調用RegisterTeeStandardSeries可以被省略。它只需要註冊基本的圖表樣式(線、棒條、餅圖等),因此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;

4,從web url加載示例xml文件的圖表。

15.2.1 加載一個序列

        XML源組件有一個SeriesNode屬性,可用於僅加載一個序列(以防XML文件包含多個序列)

 TeeXMLSource1.SeriesNode:='Series2';

15.2.2 加載到現有的序列

        如果您希望將XML文件中包含的一個序列數據加載到一個現有的序列中,那麼可以設置該序列屬性:

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

        上面的代碼將把對應“Series2”的XML數據加載到Series1中。

        注意:

        如果兩個序列類不相同(例如,XML Series2是一個,而Series1是一個棒條”),那麼最終的輸出的將是一個填滿空點的Series1

        爲什麼 ?

        “Series2”的XML數據將點值定義爲“Y”值,而Series1(一個Bar系列),期望點被定義爲“Bar”。

        這個問題有兩種解決方法:

            a)設置Series1valuesource屬性來匹配XML點的名字:

Series1.YValues.ValueSource := 'Y';

            b)設置XMLSource組件的ValueSource屬性來匹配Series1 ValueSource的名字:

TeeXMLSource1.ValueSource := 'Y';

15.3 附加特性

        TeeXMLSource組件還包含一個XMLDocument屬性,該屬性將對解析和加載XML數據的內部對象返回一個OleVariant引用。

        這個屬性引用了一個實現了MicrosoftIXMLDomDocument接口的已創建的後期綁定的實例。

TeeChart不要使用一個早期綁定的實例來避免依賴關係和版本不兼容問題,這取決於您的Windows版本、InternetExplorer版本等等。

        如果您想要閱讀關於在Delphi中使用XML解析器的優秀文章,請循着這個鏈接Delphi雜誌的網站。

        TeeXMLSource組件的另一個有用屬性是TStringList類型的“XML”。

        您可以使用這個屬性來設置XML數據,而不是使用FileName屬性。這樣,就不需要XML外部文件了。

        本教程中使用的演示程序也可以下載

注意:爲了編譯這個演示程序,需要使用TeeChart Pro版本6或更高版本(評估或註冊)


教程全文完


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章