1. 程式人生 > >【TeeChart Pro ActiveX教程】(七):使用函式(下)

【TeeChart Pro ActiveX教程】(七):使用函式(下)

下載TeeChart Pro ActiveX最新版本

在上一篇文章中,我們介紹到了在Teechart Pro ActiveX中的功能特點和新增功能,今天我們接著講定義資料來源、功能期間和週期樣式

(一)定義資料來源

上一節中的示例重點介紹如何使用Datasource通過程式碼填充Function.Series使用datasource定義Function的輸入或定義Series ODBC資料來源(請參閱有關訪問資料庫的教程)。

使用圖表編輯器,在新增函式後,函式系列的“資料來源”頁面將顯示包含在函式定義中的可用系列列表。在這裡,您可以更改要應用於系列的函式型別,並從左側列表框“Available”中選擇系列,並將它們新增到右側列表框“Selected”。

按程式碼的資料來源使用Series.Datasource屬性。

例:假設我們在圖表中有2個數據系列。我們添加了一個由2系列的平均值組成的函式:

With TChart1
  .AddSeries scLine
  'Define the Function Type for the new Series
  .Series(2).SetFunction tfAverage
  .Series(2).DataSource = "Series0,Series1"
End With

我們為2系列新增點數:

Dim t As Integer
With TChart1
  For t = 0 To 10
    .Series(0).Add 2 * t, "", clTeeColor
    .Series(1).Add 3 * t, "", clTeeColor
  Next t
End With

請注意,該功能不會顯示。您需要使用Series.CheckDatasource方法讀取Function的值。

TChart1.Series(2).CheckDataSource
'Read in data for Function

可以使用Setfunction方法在執行時更改函式定義,以便為Series分配新函式。

TChart1.Series(2).Setfunction tfMovavg

使用上面的程式碼行,Setfunction將Series(2)的Function更改為Moving Moving。

(二)功能期

Period是使用函式的重要屬性,因為Period定義了迴圈應用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個值等。 您可以通過在“Datasource”頁面中選擇相關的“Series和Function”並單擊“Options”選項卡來定義“Period”,也可以使用“FunctionType”在執行時修改“Period”。 例如,系列2是功能系列:

teechart

週期樣式

期間可以定義為範圍。這在使用Date-Time系列時非常有用,並且想要在“OneMonth”或“OneDay”等日期時間步驟中表達函式的“Period”。屬性“PeriodStyle”控制如何表達“Period”。 例如,您現在可以使用日期時間源系列上的常規“Average”功能繪製“monthly average of sales\月平均銷售額”功能,並將功能期間設定為“one month”:

'Add a Series and fill it with datetime data values at runtime (or from a database)

TChart1.Series(1).SetFunction tfAverage
TChart1.Series(1).FunctionType.PeriodStyle =psRange
TChart1.Series(1).FunctionType.Period = TChart1.GetDateTimeStep dtOneMonth 
TChart1.Series(1).DataSource = "Series0"

這將產生幾個點,每個點顯示Series0中每個月資料的“Average”。 在計算日期時間段的函式時,必須按源日期對源Series0中的點進行排序。 該範圍也可用於非日期時間序列:

TChart1.Series(1).SetFunction tfAverage
TChart1.Series(1).FunctionType.PeriodStyle =psRange
TChart1.Series(1).FunctionType.Period=100
TChart1.Series(1).DataSource= "Series0"

這將計算每個“100”間隔內每組點的平均值。 ( X > = 0,X < 100的點將用於計算第一個平均值,X> = 100的點,X < 200將用於計算第二個平均值,依此類推......)。 請注意,這與計算每100個點的平均值不同。 使用“Period Alignment”屬性可以對齊“Series”範圍內的功能點。以下將繪製每月結束時的功能點:

TChart1.Series(1).FunctionType.PeriodStyle = psRange
TChart1.Series(1).FunctionType.Period = TChart1.GetDateTimeStep dtOneMonth
TChart1.Series(1).FunctionType.PeriodAlign =paLast

PeriodStyle = OneMonth and PeriodAlign = paLast

從下圖中可以看出,“average”是在月底繪製的。

teechart

PeriodStyle = OneMonth and PeriodAlign = paFirst

在這種情況下,“average”在月初繪製。

teechart