提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
转帖|使用教程|编辑:况鱼杰|2019-12-19 14:47:19.103|阅读 346 次
概述:本教程转自屈景辉的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@cahobeh.cn
文章转载自:本文探讨 SQL Server 中 NULL 和空值之间的区别,并讨论如何有效地处理它们。
Unity 是一款功能极其丰富的游戏引擎,允许开发人员将各种媒体集成到他们的项目中。但是,它缺少最令人兴奋的功能之一 - 将 Web 内容(例如 HTML、CSS 和 JavaScript)直接渲染到 3D 场景中的纹理上的能力。在本文中,我们将介绍如何使用 DotNetBrowser 在 Unity3D 中将 Web 内容渲染为纹理。
DevExpress v24.2帮助文档正式发布上线了,请按版本按需下载~
本教程将向您展示如何用MyEclipse构建一个Web项目,欢迎下载最新版IDE体验!
交互性强的轻量级ActiveX图表控件,能高效生成多任务仪表板
TeeChart Pro VCL/FMX支持RAD Studio,Delphi和C ++ Builder以及FireMonkey的图表制作工具
TeeChart for Java适用于所有主流Java编程环境的TeeChart图表库
TeeChart for PHP一款含100%的PHP源代码并支持PHP5及更高的版本的图表开发工具
TeeChart for .NET优秀的工业4.0 WinForm图表控件,官方独家授权汉化,集功能全面、性能稳定、价格实惠等优势于一体
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@cahobeh.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢