静态事务“平铺按钮”控件的应用


概述

目前,OrBit平台已提供下拉值列表(ViewList/ViewListEx/ViewListPK)及窗体值列表(ViewListWindow/ViewListWindowPage)两种选项的选取方式。其中窗体值列表可以支持模糊匹配、复选、分页,但两者都存在一个小问题,那就是触摸屏用手指选取不方便,容易选错。针对这一点,现已开发出平铺按钮控件(ViewListButton)。根据后端返回的数据集,支持配置样式(按钮布局、大小、背景色、图标等)、复选数量(任意数量,1为单选)以及使能的灵活配置。根据选项的数据源,动态生成按钮。用户通过点击按钮进行选取,亦支持多页显示或只显示选定项。下面,就为大家阐述具体的应用与实现(系统配置、后端配置)。

特性介绍
1、主要对于工控或者平板等触屏终端,用手指去选取选项,很容易选错。以按钮的方式平铺展开,极大程度的方便用户选取相关选项;
2、现有的方式需要下拉或者弹窗之后,再去选取,而平铺按钮可以直接选取;
3、动态按钮:根据ViewListButton的数据源,动态绘制按钮并排列布局,点击之后调用相应的业务接口;
4、动态切换按钮的显示文本,如 上模 –>下模,上工 –>下工等切换;

应用场景
1、所有值列表选项;
2、程序功能入口界面设计(管理分支功能)

PWTileButtonGroup.dll 文件
【附件】PWTileButtonGroup.rar

应用实例展示

1 安灯异常呼叫入口界面

2 安灯异常呼叫界面

3 异常处理入口界面

4 作业计划

其他

实现步骤

1 服务器插件(PluginService)目录下,添加相关的dll文件: PWTileButtonGroup.dll。

2 平台系统参数中配置Always DowLoad参数,则每次登录Broswer时,会自动从PluginService目录下载文件到本地的Broswer安装目录。

3. 静态事务 或 元对象 中添加引用(PWTileButtonGroup.dll)
静态事务:

元对象:

4. 平铺按钮参数配置
静态事务:

元对象:

5. 后端ViewListButton数据集配置,及相关sql脚本编写

  1. create PROCEDURE [dbo].[Test_ViewListButton]
  2. @I_PlugInCommand varchar(5)='',--插件命令
  3. @I_OrBitUserId char(12)='',--用户ID
  4. @I_OrBitUserName nvarchar(100)='',--用户名
  5. @I_ResourceId char(12)='',--资源ID(如果资源不在资源清单中,那么它将是空的)
  6. @I_ResourceName nvarchar(100)='',--资源名
  7. @I_PKId char(12)='', --主键ID
  8. @I_ParentPKId char(12)='', --父元对象主键ID
  9. @QueryParameter nvarchar(100)= null
  10. --以上个变量为系统服务固定接口参数,必须在每一个ViewListEx过程中实现.>
  11. as
  12. begin
  13. SET NOCOUNT ON;
  14. SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
  15. -- 按钮组整体配置
  16. select
  17. 1 AutoButtonSize,
  18. 5 RowInt, /* 行数 */
  19. 4 ColInt, /* 列数 */
  20. 1 MultipleSelectInt /* 可选数量规则 0:可选任意项目 1:单选 >2:可选数量为指定的数量 */
  21. -- 单个按钮项目配置集合
  22. select top 20
  23. t.PluginId AS ButtonName,
  24. t.PluginName AS ButtonText
  25. from
  26. SysPlugIn t
  27. order by
  28. t.PluginId
  29. return 0
  30. end

6 对象脚本实例化窗体控件,及相关业务脚本编写
静态事务:

脚本代码:

  1. private PWUserControl.PWTileButtonGroup btg_ExceptionType = null;// 平铺按钮(异常类型) 控件
  2. /// <summary>
  3. /// 脚本对象实例化时加载时的方法
  4. /// </summary>
  5. public void ScriptLoad()
  6. {
  7. this.Debug("ScriptLoad()");
  8. this.btg_ExceptionType = new PWUserControl.PWTileButtonGroup(this.Scripter, "ExceptionType");
  9. this.btg_ExceptionType.GroupSelectChanged += Btg_ExceptionType_GroupSelectChanged;
  10. }
  11. private void Btg_ExceptionType_GroupSelectChanged(object sender, PWUserControl.GroupSelectChangedEventArgs e)
  12. {
  13. if (e.SeletedItems.Count == 1)
  14. {
  15. //this.Scripter.HideTab("AbnormalReporting", false);
  16. //this.Scripter.ActiveTab("AbnormalReporting");
  17. string jumpToTab;
  18. this.JumpToTab(this.Scripter, "GotoAbnormalReporting", out jumpToTab);
  19. }
  20. }
  21. /// <summary>
  22. /// 脚本在退出前的询问方法
  23. /// </summary>
  24. /// <returns>True则退出,False则取消退出</returns>
  25. public bool ScriptClosing()
  26. {
  27. if (this.btg_ExceptionType != null) this.btg_ExceptionType.Dispose();
  28. //to do..
  29. return true;
  30. }
  31. /// <summary>
  32. /// MES事务对象在关闭时卸载此脚本对象的方法
  33. /// </summary>
  34. public void ScriptUnLoad()
  35. {
  36. //to do..
  37. if (this.btg_ExceptionType != null) this.btg_ExceptionType.Dispose();
  38. }

元对象:

脚本代码:

  1. public OrBitScript.OrBitMetaAPI Scripter = new OrBitScript.OrBitMetaAPI();
  2. private PWTileButtonGroup tbg_ExceptionTypeItemValue = null;
  3. /// <summary>
  4. /// 脚本对象实例化时加载时的方法
  5. /// </summary>
  6. public void ScriptLoad()
  7. {
  8. this.tbg_ExceptionTypeItemValue = new PWTileButtonGroup(this.Scripter, "ExceptionType Default Group.ExceptionTypeItemValue");
  9. this.tbg_ExceptionTypeItemValue.Enabled = false;
  10. }
  11. public void ScriptUnLoad()
  12. {
  13. //to do..
  14. if (this.tbg_ExceptionTypeItemValue != null) { this.tbg_ExceptionTypeItemValue.Dispose(); this.tbg_ExceptionTypeItemValue = null; }
  15. }
  16. public void MainRowSelected(string CellA, string CellB, string CellC, string CellD)
  17. {
  18. if (this.Scripter.TreeViewGrid.Rows.Count == 0)
  19. {
  20. this.tbg_ExceptionTypeItemValue.ClearSelet();
  21. }
  22. }
  23. public void EditEnter(int ModifyType, string PKId, string ParentPKId)
  24. {
  25. this.tbg_ExceptionTypeItemValue.Enabled = true;
  26. return;
  27. }
  28. public void EditLeave(int ModifyType, string PKId, string ParentPKId)
  29. {
  30. this.tbg_ExceptionTypeItemValue.Enabled = false;
  31. return;
  32. }

控件使用详述

1 c#脚本使用控件API

下面介绍在c#脚本使用该控件时,可以使用那些属性、方法、事件。

1.1 控件属性

属性名 类型 说明
SelectedValues string 用来获取和设置平铺按钮选择是项目,其值是按钮项ButtonName值的逗号分隔形式
QueryParameter string 获取构造控件是设置的查询参数

1.2 控件方法

方法名 返回类型 说明
Dispose void 释放资源
ClearSelet void 清除所有选择
BindData void 从数据源获取数据绑定

1.3 控件事件

事件名 类型 说明 事件数说明
GroupSelectChanged GroupSelectChangedEventHandler 在平铺按钮选择项发生改变的时候触发的事件 参数中可以获取目前已选择按钮项的集合
GroupClick GroupClickEventHandler 在点击按钮的时候触发的事件 参数中可以获取点击标注所属的按钮项信息
GroupTagClick GroupTagClickEventHandler 在点击按钮中标注的时候触发的事件 参数中可以获取点击标注所属的按钮项信息

2 ViewListButton过程配置参数说明

ViewListButton存储过程需要返回两个查询语句
1:一个是返回单条记录,平铺按钮组整体参数配置
2:一个是返回每个按钮项的配置参数集合。

2.1 平铺按钮组整体参数配置

配置参数名 类型 默认值 说明
ColInt int 3 列数
RowInt int 3 行数
MultipleSelectInt int 0 0:可选任意项目、1:单选、>2:可选数量为指定的数量
BoundaryLineSize int 3 每个按钮之间的距离大小(单位:像素)
ButtonHeight int 60 按钮高度(单位:像素)(如果AutoButtonSize为true将被忽略)
ButtonWidth int 180 按钮宽度(单位:像素)(如果AutoButtonSize为true将被忽略)
AutoButtonSize bool true 是否自动计算按钮高宽。true:忽略设置的按钮高宽,根据控件整体大小和行列数来计算按钮高宽,以布满整个控件而不出现滚动条、false:严格使用设置的按钮高宽值
ButtonGroupMargin int 3 按钮集合相对于空间边框的距离大小(单位:像素)
GroupBorderSize int 0 整个大控件边框大小(单位:像素),如果想去掉空间边框设置为0即可
FontFamilyName string 按钮文本字体
TextMargin string 按钮文本的相对父容器的边距 值如”2,3,4,5” 则一次为上右下左的边距
ClickTagCanSelect bool true 当有标注的时候点击的是标注是否也选择或者取消选择按钮
MultiPageIsScroll bool false 当出现多页的时候是否使用滚动条方式显示(而不进行分页)
AvoidHorizontalScrollSubductionWidth int 17 当前不分页使用滚动垂直滚动显示的时候为了不出现水平滚动按钮显示区域消减的宽度(默认17)
ButtonBorderSize int 1 每个按钮的边框线厚度大小
ButtonBorderColor string ‘Silver’ 每个按钮的边框线颜色
SelectedButtonBorderColor string 已选择按钮的边框线颜色
EnableEnterStyle bool true 是否使用鼠标经过样式
MouseEnterBackColor string 鼠标经过时候的背景颜色
MouseEnterForeColor string 鼠标经过时候的字体颜色
MouseEnterButtonBorderColor string 鼠标经过时候的按钮的边框颜色
IsUniformButtonBackColor bool false 所有按钮是否统一背景颜色(设置为true时BackColor属性才有效果,如果设置为ture但BackColor为空则自动随机生成一个背景颜色)
BackColor string 当IsUniformButtonBackColor设置为true的嘶吼使用的按钮统一背景颜色
BackColorDepth int 1 自动生成背景色的颜色深度 1-3 数字越大深度越深
IsUniformButtonForeColor bool false 所有按钮是否统一字体颜色(设置为true时ForeColor属性才有效果,如果设置为ture但ForeColor为空则字体颜色默认黑色)
ForeColor string 当IsUniformButtonForeColor设置为true的是否使用的按钮统一字体颜色
DiaplaySelected bool true 是否显示选中后的样式状态
SelectBlockDirection Direction Bottom 选择标识块的方向 Top = 1, Right = 2, Bottom = 3, Left = 4
SelectBlockMargin int 0 选择标识块相对按钮的贴边边距
SelectBlockBorderSize int 0 选择标识块的边框线厚度
SelectBlockSize int 选择标识块的厚度大小(如果不设置默认为 按钮高度的1/6 或 宽度的1/12)
SelectBlockBorderColor string ‘White’ 选择标识块的边框线颜色
SelectBlockBackColor string ‘Red’ 选择标识块的背景颜色
SelectSytleType int 0 0:按钮内部底下出现红色 1:外围选择样式 用一个线条框框主按钮
SelectedEncloseBorderColor string ‘Yellow’ 用外围选择样式的时候才有用,外围线框的颜色
SelectedEncloseBorderSize int 3 用外围选择样式的时候才有用,外围线框的宽度大小
ButtonInnerOutSize int 2 用外围选择样式的时候才有用,按钮内边和选择外边之间的距离

2.2 单个按钮项参数配置

配置参数名 类型 默认值 说明
ButtonName string 按钮项目标识名
ButtonCode string 按钮项目标识码
ButtonText string 按钮显示的文本内容
ButtonIcon string 按钮代表图片
BackColor string 按钮背景颜色
ForeColor string 按钮背景颜色
FontSize float 按钮文本字体大小(如果没有设置则自动调整大小适应按钮框大小)
FontStyle FontStyle Regular 按钮字体样式 Regular = 0, Bold = 1, Italic = 2, Underline = 4, Strikeout = 8
Enabled bool true 按钮是否可以点击使用(使能状态)
TagFontStyle FontStyle Regular 标注内容字体样式 Regular = 0, Bold = 1, Italic = 2, Underline = 4, Strikeout = 8
TagFontSize float 标注内容字体大小(如果不设置,则默认字体高度为按钮高度的4分之一)
TagText string 标注文本内容
TagBackColor string 标注内容背景颜色
TagForeColor string 标注内容字体颜色
TagLeft int 标注相对按钮左边的距离
TagTop int 标注相对按钮顶部的距离
TagRight int 标注相对按钮右边的距离
TagBottom int 标注相对按钮底部的距离

版本迭代说明

目前只在异常管理模块中应用,后续可能会进一步优化迭代。


HG0064 2024年5月24日 09:15
目录