轉帖|使用教程|編輯:況魚杰|2019-12-19 14:47:19.103|閱讀 401 次
概述:本教程轉自屈景輝的Teechart應用技術詳解——快速圖表制作工具一書。本文將會介紹第五章——TeeChart的實時監控與地圖顯示,本文是第五章的最后一節,主要是一些應用的舉例。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
Steema公司和慧都科技針對中國市場聯合推出中文版TeeChart for .NET圖表控件,一共漢化2000個詞條(17000個單詞),漢化文檔35000個單詞,包括控件設計時與運行時的界面漢化以及控件使用向導文檔的漢化,總漢化90%以上!
TeeChart for .NET中文版讓您在使用和學習上沒有任何語言障礙,至少可以節省30%的開發時間。TeeChart for .NET中文版具有易上手,使用方便,穩定性好,性價比高,價格優惠等優勢,并且針對Web應用提供無限制服務器分發授權方式,非常有利于產品集成。
界面組件屬性設定
從Delphi IDE中創建一個新工程,在主窗體中拖入TChart組件,并在Chart的Series選項卡中單擊Add按鈕增加一個新的序列Series: TMapSeries,其他組件的屬性參照下表設定,設計階段的界面如下圖所示。
地圖顯示功能演示舉例組件屬性設置
組件名 | 屬性 | 設置 | 說明 |
TChart | Name | Chart1 | 圖表組件 |
TMapSeries | Name | Series1 | 圖表中的序列顯示地圖 |
TChartEditor | Name | ChartEditor1 | 圖表編輯器,在運行中調用 |
Chart | Chart1 | ||
TTeeCommander | Name | TeeCommander1 | 圖表命令組件,運行中使用,對圖表進行有關操作 |
Chart | Chart1 | ||
TMarksTipTool | Name | ChartTool1 | 標簽提示工具 |
Active | true | ||
TLegendScrollBar | Name | ChartTool2 | 圖例滾動棒工具 |
Active | true | ||
TCursorTool | Name | ChartTool3 | 十字光標工具 |
Active | true | ||
TLightTool | Name | ChartTool4 | 燈光工具 |
Active | true | ||
TCheckBox | Name | CheckBox1~CheckBox5 | 選擇框,參看實例設定 |
TStatusBar | Name | StatusBar1 | 狀態行用于提示運行狀態 |
代碼設計
地圖數據的聲明。作為地圖顯示測試數據,在代碼段的var部分定義和聲明12個區域24組坐標,以數組變量形式描述:
AX:array[0..13]of integer=(1,3,4,4,5,5,6,6,4,3,2,1,2,2); AY:array[0..13]of integer=(7,5,5,7,8,9,10,11,11,12,12,11,10,8); BX:array[0..8]of integer=(5,7,8,8,7,6,5,4,4); BY:array[0..8]of integer=(4,4,5,6,7,7,8,7,5); CX:array[0..15]of integer=(9,10,11,11,12,9,8,7,6,6,5,5,6,7,8,8); CY:array[0..15]of integer=(5,6,6,7,8,11,11,12,11,10,9,8,7,7,6,5); DX:array[0..7]of integer=(12,14,15,14,13,12,11,11); DY:array[0..7]of integer=(5,5,6,7,7,8,7,6); EX:array[0..10]of integer=(4,6,7,7,6,6,5,4,3,3,2); EY:array[0..10]of integer=(11,11,12,13,14,15,16,16,15,14,13); FX:array[0..11]of integer=(7,8,9,11,10,8,7,6,5,5,6,6) FY:array[0..11]of integer=(13,14,14,16,17,17,18,18,17,16,15,14); GX:array[0..11]of integer=(10,12,12,14,13,11,9,8,7,7,8,9); GY:array[0..11]of integer=(10,12,13,15,16,16,14,14,13,12,11,11); HX:array[0..9]of integer=(17,19,18,18,17,15,14,13,15,16); HY:array[0..9]of integer=(11,13,14,16,17,15,15,14,12,12); IX:array[0..14]of integer=(15,16,17,16,15,14,14,13,12,11,10,11,12,13,14); IY:array[0..14]of integer =(6,6,7,8, 8,9,10,11,12,11,10,9,8,7,7); JX:array[0..11]of integer=(15,16,16,17,17,16,15,13,12,12,14,14); JY:array[0..11]of integer=(8,8,9,10,11,12,12,14,13,12,10,9); KX:array[0..9]of integer=(17,19,20,20,19,17,16,16,17,16); KY:array[0..9]of integer=(5,5,6,8,8,10,9,8,7,6); LX:array[0..6]of integer=(19,20,21,21,19,17,17); LY:array[0..6]of integer=(8,8,9,11,13,11,10); Index:Integer=0;//全局變量,用于功能控制
主要代碼。首先編寫一個子過程AddShape(X,Y:array of integer;Color:TColor;Labels String),用于多邊形區域繪制。然后在窗體的OnCreate方法中調用該過程繪制所有區域,代碼如下:
procedure TForm1. FormCreate(Sender:TObject); AddShape(AX,AY,RGB(250,245,128),'北京'); AddShape(BX,BY,RGB(250,245,132),'西安'); AddShape(CX,CY,RGB(250,245,136),'上海'); AddShape(DX,DY,RGB(250,245,140),'天津'); AddShape(EX,EY,RGB(250,245,144),'拉薩'); AddShape(FX,FY,RGB(250,245,148),'烏市'); AddShape(GX,GY,RGB(250,245,152),'南京'); AddShape(HX,HY,RGB(250,245,156),'昆明'); AddShape(IX,IY,RGB(250,245,160),'武漢'); AddShape(JX,JY,RGB(250,245,164),'廈門'); AddShape(KX,KY,RGB(250,245,168),'海口'); Chart1.Refresh; end;
為了能夠在鼠標移動過程中獲得區域的標簽文字,可以利用TMarksTipTool工具的OnGetText事件中的Text:String參數實現,并且根據獲得的區域標簽Text結合Shapes的ByName[Text].ID屬性知道該區域的ID號,這時,設定一個全局變量Index傳給OnMouseMove事件,就可以在鼠標移動過程中根據ID號改變鼠標所在區域的顏色,以提高地圖的動態顯示效果。下述是在TMarksTipTool工具的OnGetText事件獲得Text后找出對應的I號并傳給全局變量的過程:
procedure TForm1.ChartTool1GetText (Sender:TMarksTipTool; var Text:String); var ID:integer; mstr:String; begin mstr:='標簽:'+Text;//獲得的標簽 ID:=Series1 Shapes.BYName [Text]. ID;//由標簽獲得區域ID Index:=ID;//傳給全局變量 mstr:=mstr+'索引:'+ Inttostr( Series1.Shapes.ByName [Text].ID); StatusBar1.SimpleText:=mstr; Chart1.Refresh; end;
然后在Chart的OnMouseMove事件中根據全局變量Index的值改變區域的頻色,達到加重顯示效果的目的,代碼如下:
procedure TForm1.Chart1MouseMove(Sender: TObject;Shift:TShiftState; X, Y: Integer); var C:TColor; mstr:String; C:= Series1.Shapes.Polygon[Index].Color;//獲取區域當前顏色 Series1.Shapes.Polygon [Index].Color:=RGB(255,0,64);//改變當前區域顏色 Chart1.Refresh;//刷新 Series1.Shapes.Polygon[Index].Color:=c;//恢復區域原始顏色 Chart1.Refresh; StatusBar1.SimpleText:=mstr;//在狀態行顯示 end;
為了實現在程序運行中的交互,程序中增加了TChartEditor組件用于動態編輯,在按鈕TButton2的OnClick事件中加入下列一行代碼即可:
ChartEditor1.Execute;
運行效果。下圖是程序運行后的效果,可以試著選擇檢查框的選項查看運行結果。
功能推廣
采用本節的方法顯示地圖是比較簡單的,但是對于一個復雜的地圖來講這樣做是很費勁的。如果已有地圖數據如SuperMap系統的數據庫表,那么可以借助本書中有關TeeChart與數據庫一章的描述利用這些數據。如果有些數據不配套,可以在了解表結構的基礎上,編寫一個轉換接口,然后利用這個接口將數據讀入,就會取得事半功倍的效果。
相關資料推薦:
下一章:單圖表和多圖表的預覽和打印
=====================================
現TeeChart for .NET,TeeChart for JavaScript/HTML5,TeeChart for Xamarin.Android等均已加入在線訂購,現在搶購可立享優惠!
關注慧聚IT微信公眾號???,了解產品的最新動態及最新資訊。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: