解析大型.NET ERP系统 灵活复杂的界面控件Infragistics WinForms
2015-07-31 07:57
260 查看
Infragistics是.NET平台优秀的控件供应商,囊括了WinForms,ASP.NET,Silverlight,WPF,WindowsPhone等所有关于微软.NET技术的界面控件。借助于这些功能复杂的控件,为ERP的界面提供了灵活的操作能力。
本篇不谈控件开发,只详细说明ERP系统如何使用InfragisticsWinForms,而不用.NET自带的控件。
如果用InfragisticsWinForms的TextEditor,可实现如下的效果:
对于必须输入值的文本编辑控件,控件末尾有一个星号图片标识。如果这个编辑控件有值,则图标消失。
只需要一行代码,InfragisticsWinForms可实现这个效果。
继续比较金蝶界面,还是用上面的那张模拟BOM的图片,工艺路线和计量单位文本编辑控件后面有一个小图标,表示点这个图标,可弹出一个数据查找窗体,这样方便用户录入数据。
ERP系统也有类似的实现,先看界面效果图,注意左边第一个控件Ccy货币输入控件,它后面有一个小按钮。
当鼠标离开时,Ccy控件后面的小按钮自动消失。为了实现这个特性,也只需要一行代码:
CodeProject中有几篇文章,是专门讲解通过重写微软的DataGridView控件,如何具备以上列出的特性。
InfragisticsWinForms已经内置了以上特性,而且支持属性序列化。比如上图中列的顺序是LineNo,ItemNo
我可以将ItemNo拖动到LineNo列的前面,在窗体关闭时,保存这个顺序,下次打开窗体时读取字段顺序值,恢复成用户设定的顺序。能够保存用户偏号(Profile)是系统友好的一个主要方面。
在窗体关闭前,读取控件的属性,保存到数据库中,读取属性值:
界面加载时,根据数据库中的记录设置控件属性:
把上面两段代码,分别放到窗体加载和关闭事件中,可参考下面的程序代码,实际保存用户偏号。
文本编辑类控件,内置标准的剪切复制粘贴功能,还应该增加这三个编辑功能的上下文菜单。
日期时间控件,也支持剪切复制粘贴功能。
这个特性在Grid控件中非常有用,回车后直接跳到下一个单元格(Cell),最后一个单元格后再按回车键,可跳到下一行。
UltraExpandableGroupBox左上角有一个可折叠或展表的符号,可节省屏幕空间。
Infragistics控件的设计人员设计这个打印功能,考虑了环保方面的要求(节省纸张和墨水)。
本篇不谈控件开发,只详细说明ERP系统如何使用InfragisticsWinForms,而不用.NET自带的控件。
1文本编辑控件提示必须输入值
如果一个文本编辑控件必须输入值,有许多实现方法可以借鉴。看金蝶ERP的实现,在文本标签控件位置处用星号标识。如果用InfragisticsWinForms的TextEditor,可实现如下的效果:
对于必须输入值的文本编辑控件,控件末尾有一个星号图片标识。如果这个编辑控件有值,则图标消失。
只需要一行代码,InfragisticsWinForms可实现这个效果。
txtCustomerNo.Appearance.Image=Properties.Resources.Required_Field_16;
2控件的数据查找窗体
继续比较金蝶界面,还是用上面的那张模拟BOM的图片,工艺路线和计量单位文本编辑控件后面有一个小图标,表示点这个图标,可弹出一个数据查找窗体,这样方便用户录入数据。ERP系统也有类似的实现,先看界面效果图,注意左边第一个控件Ccy货币输入控件,它后面有一个小按钮。
当鼠标离开时,Ccy控件后面的小按钮自动消失。为了实现这个特性,也只需要一行代码:
EditorButtonbutton=newEditorButton("lookup"); button.Text="..."; txtCcy.ButtonsRight.Add(button);
3控件支持钻取
钻取这个词的含义来源于报表中,主表点击事件钻取到子表明细记录。ERP中也吸取了这个思想,可以给控件设定要钻取的功能。比如上图中的货币Ccy,销售员Salesman,点击文本编辑控件中值,可打开相应的主档功能,查看详细信息。4Grid控件支持过滤,排序,分组,字段选取,查找,列顺序重排列,导出Excel
以图为例子,参考销售订单明细中的网格控件。CodeProject中有几篇文章,是专门讲解通过重写微软的DataGridView控件,如何具备以上列出的特性。
InfragisticsWinForms已经内置了以上特性,而且支持属性序列化。比如上图中列的顺序是LineNo,ItemNo
我可以将ItemNo拖动到LineNo列的前面,在窗体关闭时,保存这个顺序,下次打开窗体时读取字段顺序值,恢复成用户设定的顺序。能够保存用户偏号(Profile)是系统友好的一个主要方面。
5日期时间控件DateTimePicker支持空值
.NETWinForms自带的日期时间控件不支持空日期时间值,这里的空值不是指类型DataTime?。当打开用户界面创建新的单据时,如果日期控件没有任何设定值动件,日期控件将返回空时间值,也就是保持NULL值。6按钮Button控件支持图片
参考下面的报表打印按钮,它可以显示一个打印的小图标。Delphi很多年前就具备这个特性。7控件支持属性序列化
窗体中对控件的布局Layout的修改,可以保存到数据库或存储介质中,当再次加载控件时,可以恢复成上次用户修改的布局样式(Layout)。这个特性,在Grid,TreeView控件有很重要的作用。在窗体关闭前,读取控件的属性,保存到数据库中,读取属性值:
values.Add(newComponentPropertyValue("AllowRowSummaries",true));
界面加载时,根据数据库中的记录设置控件属性:
if(values.ContainsKey("AllowRowSummaries")&&Convert.ToBoolean(values["AllowRowSummaries"].Value)) { current.AllowRowSummaries=AllowRowSummaries.True; }
把上面两段代码,分别放到窗体加载和关闭事件中,可参考下面的程序代码,实际保存用户偏号。
protectedoverridevoidOnLoad(EventArgse) { LoadFormProfile(); } protectedoverridevoidOnClosed(EventArgse) { SaveFormProfile(); }
8控件增加上下文菜单
文本编辑类控件,内置标准的剪切复制粘贴功能,还应该增加这三个编辑功能的上下文菜单。日期时间控件,也支持剪切复制粘贴功能。
9控件的TabIndex顺序要预先设置好,Enter键可以当Tab键使用
ERP界面大部分控件是单行文本输入,可以考虑给编辑控件重写键盘事件,按Enter键可切换到下一个TabIndex控件。protectedoverridevoidOnKeyDown(KeyEventArgse) { if(!base.DesignMode) { if((!e.Alt&&!e.Control)&&!e.Shift) { if(e.KeyCode==Keys.Enter) { SendKeys.Send("{TAB}"); e.Handled=true; }
这个特性在Grid控件中非常有用,回车后直接跳到下一个单元格(Cell),最后一个单元格后再按回车键,可跳到下一行。
10可折叠式组合框ExpandableGroupbox
上面的截图中用Groupbox将特性相近的控件包括起来,这是界面设计中很友好的一种表达方式。如果窗体的空间位置不够,或是控件的值仅仅用于参考,可以考虑用UltraExpandableGroupBox,它的模样参考下面的界面例子。UltraExpandableGroupBox左上角有一个可折叠或展表的符号,可节省屏幕空间。
11Grid控件支持打印预览和打印
Grid控件内置了打印功能,参考下图,在数据查询类功能中有很重要的作用。Infragistics控件的设计人员设计这个打印功能,考虑了环保方面的要求(节省纸张和墨水)。
相关文章推荐
- VC++ MFC 按钮的全部样式Style
- oc语言第七课 内存管理一——ios学习连载12
- 基于Hadoop SLA认证机制实现权限控制
- Android中Service类onStartCommand
- Linux内存管理原理
- 懵懂到迷茫的开始
- 一个老程序员的十年回顾
- Android 应用启动界面自定义
- Linux 分区简介
- 3.2 cocos2d-x渲染
- Oracle索引
- 架构师速成6.11-开发框架-后端封装思路
- 架构师速成6.11-开发框架-后端封装思路 分类: 架构师速成 2015-07-31 07:46 91人阅读 评论(0) 收藏
- Cable master
- JDBC中使用存储过程
- ThinkPHP创建应用的一般开发流程及实例 .
- BMW 420i
- Objective C语言----类,对象,方法总结
- zTree初体验(三)——异步加载
- OSChina 周五乱弹 —— 挖掘机如何污染你的心灵