Delphi呼叫告警系统监控面板动态实现

Delphi呼叫告警系统监控面板动态实现摘要:本文介绍了用动态创建MPI(Multi-PageInterface)的方法实现多业务窗口,用动态创建自定义DBCtrlGrid组件的方法实现呼叫告警监控面板。关键词:Dephi7动态;MPI;DBCtrlGrid中图分类号:X924.3多标签页、窗格式监控面板比较直观和方便,可以用在多种监控系统上。呼叫告警系统监控面板,通过权限控制动态创建一定数量的标签页(一般不再关闭),然后将各个房间(也可以是各个监控点)的资料和状态在窗格中显示出来,后台定时扫描数据库,如有告警或者异常状态则背景用红色表示,用来提醒、处理告警,本文尝试用福利院(医院)呼叫告警系统的一个监控模块来介绍用动态创建MPI的方法实现多业务窗口,并用动态创建自定义DBCtrlGrid组件的方法实现呼叫告警监控面板。1自定义控件类1.1自定义DBCtrlGrid控件类,在继承TDBCtrlGrid控件的基础上,增加了数据源、数据集、图像类,和动态感知控件以及定时器。用来定时扫描后台Oracle数据库中房间的状态,显示在自定义DBCtrlGrid中,自定义DBCtrlGrid控件类中对基类的构造函数进行的重载,以方便传递动态SQL参数,用来实现不同院名数据的获取。//自定义TDBCtrlGrid控件,很重要要用自定义控件的panel属性;TMDBG=class(TDBCtrlGrid)ds:TDataSource;//数据源orq:TOraQuery;//连接Oracle数据库img:TImage;//显示小人图标name:TDBText;//显示人名room:TDBText;//显示房间号tm:TTimer;//定时器privatev_sql:string;//SQL语句public//构造函数重载增加初始化参数,Str_Sql是SQL语句,ASession是ORACLE连接sessionconstruetorCreate(Aowner:TComponent;Str_Sql:string;ASession:TOraSession);overload;destructorDestroy();override;//覆盖析构函数,主要用做控件对象的释放procedureMyPaintPanel(DBCtrlGrid:TDBCtrlGrid;Index:Integer);//重绘Panel颜色procedureMytimer(Sender:TObject);//定时器自定义过程end;MyPaintPanel过程重新实现了TDBCtrlGrid的OnPaintPanel事件,Mytimer过程重新实现Ttimber的Ontimer事件。1.2自定义TtabSheet用于动态创建页面,嵌于TpageControl中TMYTabSheet二class(TTabSheet)//自定义TTabSheetDbCtrlGrid:TMDBG;//自定义TMDBG类Public//构造函数重载constructorCreate(Aowner:TComponent;Str_Sql:string;ASession:TOraSession);overload;destructordestroy();override;//析构函数覆盖end;2编码实现动态创建MYTabSheet和MYDBCtrlGrid控件,将MYDBCtrlGrid嵌入MYTabSheet,然后再将MYTabSheet赋给PageControl控件,形成一个标签业务界面。TMDBG构造函数,初始化成员。construetorTMDBG.create(Aowner:TComponent;Str_Sql:string;ASession:TOraSession);begininheritedcreate(Aowner);//继承v_sql:二Str_Sql;ds:=TDataSource.Create(self);//此处self是TMDBG,TMDBG控制该对//象的生存周期orq:=TOraQuery.Create(self);img:=TImage.Create(self);name:=TDBText.Create(self);room:=TDBText.Create(self);orq.Session:=ASession;//本例子使用了ODAC控件,此处需要连接OraSession控件ds.DataSet:二orq;self.DataSource:=ds;//TMDBG的数据源name.DataSource:=ds;//数据源name.Parent:=Self.Panel;//重要Parent必须是Self.Panel才能每个窗格内都显示出来name.DataField:二^elder_name?;//数据源中的字段,老人人名name.Transparent:=true;//设置背景透明room.DataSource:二ds;room.Parent:=Self・Panel;room.DataField:二“ELDER_ROOM_ID,;//数据源中房间号room.Font.Size:-12;//设置为12号字体room.Font.Style:=[fsBold];//加粗img.Parent:=self.Panel;//重要,Parent必须是Self.Panel才能每个窗格内都显示出来否则//只可能显示出一个图像orq.SQL.Clear;orq.SQL.Text:=v_sql;//传递动态SQL语句orq.Prepared:=true;orq.Open;//打开查询数据集tm:=TTimer.Create(Self);tm.Interval:=5000;//扫描间隔时间Self.OnPaintPanel:=MyPaintPanel;//TDBCtrlGrid的OnPaintPanel事件实现过程重新实现tm.OnTimer:=Mytimer;//Ttimer的OnTimer事件实现过程重新实现tm.Enabled:二true;end;3结束语通过本文,可实现动态创建MPI界面和基于TDBCtrlGrid控件的监控窗格,经过进一步改进该监控界面还能用于程控交换监控、设备监控、以及视频监控等系统。本例子在Delphi7和WinXP环境下通过。参考文献:[1]刘艺.Delphi面向对象编程思想[M].北京:机械工业出版社,2004.

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

笔杆子文秘
机构认证
内容提供者

为您提供优质文档,供您参考!

确认删除?