Teechart圖表應(yīng)用技術(shù)詳解—第五章之TeeChart實時監(jiān)控原理和軸管理工具
Steema公司和慧都科技針對中國市場聯(lián)合推出中文版TeeChart for .NET圖表控件,一共漢化2000個詞條(17000個單詞),漢化文檔35000個單詞,包括控件設(shè)計時與運行時的界面漢化以及控件使用向?qū)臋n的漢化,總漢化90%以上!
TeeChart for .NET中文版讓您在使用和學習上沒有任何語言障礙,至少可以節(jié)省30%的開發(fā)時間。TeeChart for .NET中文版具有易上手,使用方便,穩(wěn)定性好,性價比高,價格優(yōu)惠等優(yōu)勢,并且針對Web應(yīng)用提供無限制服務(wù)器分發(fā)授權(quán)方式,非常有利于產(chǎn)品集成。
實時監(jiān)控是以時間為基準的連續(xù)描述信息變化的一種監(jiān)控方法,在各行各業(yè)都具有廣泛的應(yīng)用,因此,以圖表形式實時記載信息變化曲線給TeeChart賦予了重要的任務(wù)。
TeeChart實時監(jiān)控原理
Chart圖表是在一個固定區(qū)域中顯示指定信息,當需要實時監(jiān)控時就保持當前時刻以前個時間段的信息,隨著時間的推移,這個時間段會發(fā)生新的變化,也就說在這個顯示區(qū)域總是顯示最新時間段的信息。那么,就需要在增加一個新時間點后,將原來顯示的信息平移出顯示區(qū)域一個時間點,不斷重復(fù)這個操作,就實現(xiàn)了實時的監(jiān)控操作。
使用TeeChart的軸管理工具
TeeChart提供了5個有關(guān)軸管理的工具,其中Axis Scroll、Axis Arrows兩個工具與軸的滾動密切相關(guān),而由Axis Scroll實現(xiàn)軸滾動更為方便。
Axis Scroll軸滾動工具
在TeeChart的圖表編輯器中,單擊Tools選項卡,單擊Add按鈕,顯示Chart Tools Gallery彈出窗口,如下圖1所示。
在下圖1的Axis選項卡中選擇 Axis Scroll工具,然后單擊Add按鈕,這時圖表編輯器的Tools選項卡變?yōu)槿鐖D2所示的界面,坐標軸滾動工具Axis Scroll已處于激活狀態(tài)( Active=true),并在Axis列表框顯示Bottom Axis關(guān)聯(lián),即該軸滾動工具與Bottom Axis關(guān)聯(lián)。也就是說可以對這個軸進行滾動操作。
Axis Scroll工具的主要屬性
Axis Scroll工具是一個TAxisScrollTool對象,其中包含TChartAxis對象,這是一個專門用來管理圖表坐標軸的對象,該對象的Scroll方法為滾動坐標軸提供了方便。如:
ChartTool1.Axis.Scrol1(1.0);
實際上,只需要使用這個方法就可以實現(xiàn)滾動。當然,如果要對坐標軸實現(xiàn)其他操作可以利用工具提供的其他屬性、方法和事件。
代碼實現(xiàn)
一個窗口區(qū)域顯示的數(shù)據(jù)點數(shù)是固定的,當點數(shù)超過指定值后,就應(yīng)該加入新的點而移出最舊的點,這樣就是一個窗口滾動的過程。為了模擬實時監(jiān)控狀態(tài),可以利用定時器來實現(xiàn),在定時器的 OnTimer事件中加入下列代碼
n:=Random(100); //隨機數(shù)發(fā)生器 Series1. Add(n, TimeToStr(Time)); //增加當前點,并在X軸上標注當前時間 Series1. RefreshSeries; //刷新序列 if Series1.Count >100 then //判斷當前窗口的點數(shù)是否超過100個點 ChartTool1.Axis.Scroll(1.0); //當大于100點時每次規(guī)動1.0個單位
即窗口中的點數(shù)超過100時,移動1.0個單位。
應(yīng)用實例
建立一個新工程,并按下表所示設(shè)置組件屬性,設(shè)計階段的界面如圖3所示。
組件名 | 屬性 | 設(shè)置 | 說明 |
TChart | Name | Chart1 | 圖表組件 |
TLineSeries | Name | Series1 | 線型序列組件 |
TTimer | Name | Timer1 | 定時器 |
Interval | 100/500/1000 | ||
TComboxBox | Name | ComboxBox1 | 數(shù)據(jù)頻率選擇 |
Items | 100/500/1000 | ||
TRadioGroup | Name | RadioGroup1 | 功能選擇 |
Items | 執(zhí)行實時監(jiān)控/記錄歷史狀態(tài) | ||
TCheckBox | Name | CheckBox1 | 用作定時器開關(guān) |
Checked | False |
在ComboBox1Change事件中加入下列代碼,用于設(shè)定時間間隔,即數(shù)據(jù)采集頻率:
procedure TForm1.ComboBox1Change (Sender:Tobject); begin case ComboBox1. ItemIndex of 0: Timer1.Interval:=1000; 1: Timer1.Interval:= 500; 2: Timer1.Interval:=100; end; end;
在定時器的OnTimer事件中加入下列代碼,根據(jù)分組框的功能選擇,確定定時器的工作方式以及序列數(shù)據(jù)的追加、屏幕滾動等屬性。
procedure TForm1.Timer1Timer(Sender:TObject); begin n:=Random(100); Series1.Add(n, TimeToStr(Time)); Series1.RefreshSeries; if RadioGroup1.ItemIndex=0 then begin if Series1.Count >100 then ChartTool1.Axis Scroll(1.0); end else if RadioGroup1.ItemIndex=1 then begin Chart1.BottomAxis.Automatic:=true; end; end;
最后,在CheckBox1的OnClick事件中加入下列語句:
Timer1.Enabled:=CheckBox1.Checked;
該條語句用于控制定時器的打開與關(guān)閉以實現(xiàn)功能切換。該實例運行階段的界面如下圖所示。
相關(guān)資料推薦:
上一章:綜合應(yīng)用實例
=====================================
現(xiàn)TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購,現(xiàn)在搶購可立享優(yōu)惠!
關(guān)注慧聚IT微信公眾號???,了解產(chǎn)品的最新動態(tài)及最新資訊。