Teechart图表应用技术详解—第五章之应用举例

本教程转自屈景辉的Teechart应用技术详解——快速图表制作工具一书。本文将会介绍第五章——TeeChart的实时监控与地图显示,本文是第五章的最后一节,主要是一些应用的举例。

    Steema公司和科技针对中国市场联合推出中文版TeeChart for .NET图表控件,一共汉化2000个词条(17000个单词),汉化文档35000个单词,包括控件设计时与运行时的界面汉化以及控件使用向导文档的汉化,总汉化90%以上!

    TeeChart for .NET中文版让您在使用和学习上没有任何语言障碍,至少可以节省30%的开发时间。TeeChart for .NET中文版具有易上手,使用方便,稳定性好,性价比高,价格优惠等优势,并且针对Web应用提供无限制服务器分发授权方式,非常有利于产品集成。

TeeChart for .NET最新试用版


界面组件属性设定

    从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);varID:integer;mstr:String;beginmstr:='标签:'+Text;//获得的标签ID:=Series1 Shapes.BYName [Text]. ID;//由标签获得区域IDIndex:=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);varC: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的地图显示原理和代码设计思路

下一章:单图表和多图表的预览和打印

Teechart 2019资源合集

=====================================

    现TeeChart for .NETTeeChart for JavaScript/HTML5TeeChart for Xamarin.Android等均已加入在线订购,现在抢购可立享优惠!

    关注慧聚IT微信公众号了解产品的最新动态及最新资讯。

标签:

来源:慧都

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年11月16日
下一篇 2019年11月16日

相关推荐

发表回复

登录后才能评论