• <menu id="w2i4a"></menu>
  • logo 【TeeChart VCL/FMX】教程2019
    文檔首頁>>【TeeChart VCL/FMX】教程2019>>TeeChart Pro VCL/FMX教程(七):使用函數(二)

    TeeChart Pro VCL/FMX教程(七):使用函數(二)


        TeeChart Pro VCL/FMX是一款主流的圖表制作工具。提供了數百種用于可視化的2D、3D圖形樣式、56種數學、統(tǒng)計和金融函數,以及不限數量的坐標軸和30種調色板組件。TeeChart Pro VCL/FMX教程將會以連載的形式持續(xù)為大家?guī)?a href="http://www.xiangyinys.com/product/608/download" target="_self" style="white-space: normal;">TeeChart Pro VCL/FMX的使用方法。

    點擊下載TeeChart Pro VCL/FMX最新試用版 


        Function Period 

        Period是使用函數的重要屬性,因為Period定義了循環(huán)應用Function的點的范圍

    • 我們有6個數據點(例如Bar系列的條形圖),其值為: 3,8,6,2,9和12。

    • 定義一個具有周期0的函數系列(默認),繪制的平均值為: 6.667。 

    • 將Period設置為2,我們得到3個平均值作為函數的輸出: 5.5,4和10.5。 

    • 這些值將在其周期范圍內集中繪制,輸入系列中第1和第2欄之間的第1個值,第3和第4欄之間的第2個值,依次類推。 

    • 您可以通過在圖表編輯器中選擇函數來定義Period,也可以在FunctionType運行時修改Period。

        示例:系列2是功能系列:

    Series2.FunctionType.Period:=2;

        以下是2張圖表,突出顯示應用期間的效果 :

            Period0.gifPeriod2.gif


        當函數Period大于零(它按點組計算)時,函數結果默認在函數周期的center位置添加到系列中,PeriodAlign屬性將會控制where以在整個期間內放置函數計算。

    TeeFunction1.PeriodAlign := paCenter ; { <-- by default it is centered }

        paFirst和paLast常量將在每個Period的開始和結束的X坐標處繪制計算。 每個藍點顯示使用該月第一天和最后一天之間所有點的平均值。

    PeriodAlign = paLast 

        從下圖中可以看出,平均值是在月底繪制的:

    periodal1.jpg

    PeriodAlign = paFirst 

        這種情況下,平均值就是在月初繪制的:

    periodal2.jpg

    Deriving custom functions (VCL only)    

        創(chuàng)建一個新的Function組件只是創(chuàng)建一個從TTeeFunction派生的新組件(它也可以從現(xiàn)有函數派生)。 在TTeeFunction中有兩個重要的虛擬方法可以被覆蓋用以創(chuàng)建新的Function類型:

    • 函數TTeeFunction.Calculate(SourceSeries:TChartSeries; First,Last:Longint):Double; 

    • 函數TTeeFunction.CalculateMany(SourceSeriesList:TList; ValueIndex:Longint):Double; 

        如果只有一個系列是數據源,則Calculate方法用于計算函數結果,如果多個系列是數據源,則CalculateMany用于計算函數結果。    

        示例:創(chuàng)建新的TMyFunction 

    TMyFunction返回平方和

    type
     TMyFunction = class( TTeeFunction )
     end;

        此函數只能有一個數據源或多個數據源,因此我們將覆蓋Calculate和CalculateMany方法。

        我們將用覆蓋TMyFunction的Calculate方法來做一件非常簡單的事情。 Calculate方法如下所示:

    Function TMyFunction.Calculate(SourceSeries:TChartSeries; First,Last:Integer):Double;
    Var StartPoint, EndPoint, t : Integer;
    begin
      StartPoint:=0;
      EndPoint:=SourceSeries.Count-1;
      if First <> -1 then StartPoint:=First;
      if Last <> -1 then EndPoint:=Last;
      Result:=0;
      for t:=StartPoint to EndPoint do
          Result:= Result + Sqr(SourceSeries.MandatoryValueList[t]);
    end;

        StartPoint和EndPoint變量用于loop所有的SourceSeries點以計算平方和。    

        使用MandatoryValueList屬性代替YValues屬性只是為了使此函數與HorizBarSeries等系列類型一起使用,其中是XValues保存點值而不是YValues。

        如果只有一個系列是數據源,則Calculate方法用于計算函數結果,如果多個系列是數據源,則CalculateMany用于計算函數結果。    

        覆蓋TMyFunction的CalculateMany方法以允許TMyFunction與具有多個系列作為數據源的系列一起使用。 以編程的方式,一個系列可以添加為其他系列的數據源。

    Function TMyFunction.CalculateMany(SourceSeriesList:TList;
                                       ValueIndex: Integer):Double;
    var t : Integer;
    begin
      Result:=0 ;
    
      for t:= 0 to SourceSeriesList.Count -1 do
          Result := Result + sqr(TChartSeries(SourceSeriesList[t]).MandatoryValueList[ValueIndex]);
    end;

        CalculateMany被源系列中的每個點調用一次,從零開始,再以所有數據源的最小點數結束。 

    重點!??!理解Calculate和CalculateMany之間的區(qū)別非常重要。 當只有一個數據源并且只調用一次時調用Calculate。 當有多個Series作為數據源時,會多次調用CalculateMany(每個點一個)。 


        如果對于TeeChart Pro VCL/FMX有任何的問題或者想要咨詢的都可以點擊聯(lián)系在線客服>>

    掃碼咨詢


    添加微信 立即咨詢

    電話咨詢

    客服熱線
    023-68661681

    TOP
    三级成人熟女影院,欧美午夜成人精品视频,亚洲国产成人乱色在线观看,色中色成人论坛 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();