- GridControl是AVEVA封装的一个内置的列表控件,其效果类似于C#里的grid控件。这样就可以在PML里面实现列表的功能,其功能要远远强于普通的LIST控件,当然其实现也比较复杂。
前置条件
导包
需要在使用前,将DLL文件加载到内存中。
import GridControl
import Aveva.Pdms.DataManagement.PML
12
窗体定义
FRAME .frmPipe 管线清单
using namespace Aveva.Pdms.Presentation
CONTAINER .conPipeGrid pmlnetControl pipegrid dock fill Width 50 Height 12
exit
1234
最好用一个frame将grid控件包含在里面。需要加入命名空间。由于gridcontrol是C#控件,因此他的对象类型必须是CONTAINER。需要在窗体中定义一个全局变量,用于绑定该控件。member .pipeGrid is NetGridControl
构造函数
需要在窗体的构造函数里面,绑定控件的句柄。这也是PML和C#交互的必要条件。
using namespace Aveva.Pdms.Presentation
!this.pipeGrid = object NetGridControl()
!this.conPipeGrid.Control = !this.pipeGrid.handle()
123
绑定数据
using namespace Aveva.Pdms.Presentation
!head[1] = Name
!head[2] = Sex
!content[1][1] = 张三
!content[1][2] = 男
!content[2][1] = 李四
!content[2][2] = 女
!nds = object NetDataSource(Pipe List, !head, !content)
!this.pipeGrid.BindToDataSource(!nds)
123456789
grid的title是第二个参数,必须为数组。该参数为可选。grid的内容是第三个参数,必须是一个二维数组。第三个参数可以是一个读取自excel的file对象。
绑定事件
gridcontrol控件,也支持事件,这些事件以委托的方式实现PML与C#的交互。
右键事件
定义MENU
这里和普通的PML弹窗没有多大的差异。
MENU .pipeGridPopup Popup
!this.pipeGridPopup.Add(Callback, 检查, !this.checkPipe())
!this.pipeGridPopup.Add(Callback, 强制通过, !this.forcePass())
123
绑定句柄
!this.pipeGrid.AddEventHandler(OnPopup, !this, eventConPipeGridRightClick)
1
第一个参数OnPopup表明是右键事件。第二个参数是固定写法。第三个参数,是右键的弹出事件。注意这个方法没有()
注册事件
define method .eventConPipeGridRightClick(!data is ARRAY)
!this.conPipeGrid.Popup = !this.pipeGridPopup
!this.conPipeGrid.ShowPopup(!data[0], !data[1])
endmethod
1234
选择后事件
绑定句柄
!this.pipeGrid.AddEventHandler(AfterSelectChange, !this, eventConPipeGridAfterSelectChange)
1
注册事件
define method .eventConPipeGridAfterSelectChange(!data is ARRAY)
q var !data[0]
endmethod
123
这里!data是用户选择的,下标是从0开始的行号数组,如果grid是单选,则该数组永远只有一个元素。
属性
属性说明备注!this.pipeGrid.ColumnExcelFilter(true)是否开启表格头部的筛选功能!this.pipeGrid.FixedHeaders(true)是否固定表格头部!this.pipeGrid.FixedRows(false)是否固定行数!this.pipeGrid.ColumnSummaries(true)是否在表格的下方汇总行数!this.pipeGrid.SingleRowSelection(false)表格是单选还是多选!this.pipeGrid.HideGroupByBox(true)是否开启分组排序功能
方法
GET
方法返回值备注getSelectedRows()二维数组获取选择的行的数据getRow(real row)一维数组获取指定行的数据getCell(real row, real column)string获取指定单元格的值getRows()二维数组获取grid的所有数据
SET
方法返回值备注setCellImage(real row, real column, string imagePath)设置指定单元格的图片SetColumnWidth(real column, real width)设置列的宽度getCell(real row, real column)string获取指定单元格的值
操作
方法返回值备注ClearGrid()清除grid的所有数据(包括表头和数据)SaveGridToExcel(FILE file)将grid的数据,导出生成一个外部excel文件
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删