GridControl

GridControl是AVEVA封装的一个内置的列表控件,其效果类似于C#里的grid控件。这样就可以在PML里面实现列表的功能,其功能要远远强于普通的LIST控件,当然其实现也比较复杂。

前置条件

导包

需要在使用前,将DLL文件加载到内存中。

import 'GridControl'
import 'Aveva.Pdms.DataManagement.PML'

窗体定义

FRAME .frmPipe '管线清单' 
  using namespace 'Aveva.Pdms.Presentation' 
  CONTAINER .conPipeGrid pmlnetControl 'pipegrid' dock fill Width 50 Height 12
  exit
  • 最好用一个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()

绑定数据

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)
  • 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()')

绑定句柄

!this.pipeGrid.AddEventHandler('OnPopup', !this, 'eventConPipeGridRightClick')
  • 第一个参数OnPopup表明是右键事件。
  • 第二个参数是固定写法。
  • 第三个参数,是右键的弹出事件。注意这个方法没有()

注册事件

define method .eventConPipeGridRightClick(!data is ARRAY)
  !this.conPipeGrid.Popup = !this.pipeGridPopup
  !this.conPipeGrid.ShowPopup(!data[0], !data[1])
endmethod

选择后事件

绑定句柄

!this.pipeGrid.AddEventHandler('AfterSelectChange', !this, 'eventConPipeGridAfterSelectChange')

注册事件

define method .eventConPipeGridAfterSelectChange(!data is ARRAY)
  q var !data[0]
endmethod

这里!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文件
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值