• PB 之多行标题报表


    第一种

     1.添加一个text,将背景色选为非透明色;position中的layer,选为foreground,这样就可以拖动列宽了
             2.在position属性标签页的width里,点右边的小按钮,出现定义其宽度的对话框,在里面输入long(describe("ck_je_t.x")) + long(describe("ck_je_t.width")) - long(describe("ck_sl_t.x")),这里红色的部门作一个解释,这里实际上定义了text的动态列宽,即它的列宽要依据“金额”列的x值 + “金额”列的宽度,再减去“数量”列的x值,这样实际上就在程序运行时,可以动态地设置“出库”标题栏的列宽了。
            3.再设置text的x值,在PB10.5里,x值右边的小按钮显示为灰色,不可用,没关系,关掉它,在system tree里找到它,再用edit source找开它,学会分析,找到刚才添加的text的属性,在默认值后面加上一个表达式,我加的是“~tlong(describe(~"ck_sl_t.x~"))”,注意其中的格式,在edit source里,会用~t作为分隔符。
             4.好了,试试看吧, 在程序运行时,拖动列,跨列的标题头也跟着动了,完全达到了我们要求的效果。

    假设给Grid加两个标题:d_bt1,d_bt2。d_bt1为大标题,d_bt2为小标题,如有多个小标题同样添加。假设数据最后一列名为n03。
    一、添加标题d_bt1(大标题)
    1、放一个Text(文本框)对象到DataWindow的表头上:将header向下拉,再将表头部分向下移,然后放一个Text对象到header区。
    2、在此Text上点击鼠标右键选择Properties:①General:在name栏设置标题名:d_bt1;②Font:Text Color->Black,Background->White;③Position:x=0,y=0,Layer->Foreground;④Expression:设置font.weight与width的表达式:long(describe('n03.x'))+long(describe('n03.width'))+10,其中n03为Detail部分的最后一个字段名称,加10是为了盖住最右边的网格线。将标题设为居中,在改变表格栏目大小时标题会随之变动。
    3、改变Text的位置和宽度,然后将此Text的内容改为正确的报表标题,记下Position.Width与Height的值。
    二、添加标题d_bt2(小标题)
    1、放一个Text对象到DataWindow表头的标题d_bt1下。
    2、在此Text上点击鼠标右键选择Properties:①General:在name栏设置标题名:d_bt2;②Font:Text Color->Black,Background->White;③Position:x=0,y=200(200为d_bt1.Positon.Height的值),Layer->Foreground,将Width的值设为d_bt1.Position.Width的值;④Expression:设置font.weight与width的表达式:long(describe('n03.x'))+long(describe('n03.width'))+10,说明同上。
    三、添加横线
    1、在DataWindow表头的标题d_bt2下放一械Line(横线)对象。
    2、在此Line上点击鼠标右键选择Properties:①Position:x1=0,x2=d_bt1.Position.Width,y1与y2的值应为d_bt2.Position.y+d_bt2.Position.Height,在设计时取值比此值稍大一些,便于设计;②Expression:x2=long(describe('n03.x'))+long(describe('n03.width'))+9,y1(y2)=long(describe('d_bt2.y'))+long(describe('d_bt2.height'))
    四、在脚本中动态修改标题内容
    对于标题中文本可以用dw_1.modify("text_name.text = '标题'") 在程序中动态修改,标题部分还可使用变量。
    五、如何修改显示方式为grid的DataWindow的字段的顺序?
    在数据窗口画板中,PB不允许拖动列来改变列的顺序。技巧是在预览中,拖动列到你想要的顺序,返回到画板中,保存即可。
    六、如何取DW中Summary的值
    if dw_1.RowCount() > 0 then
    em_1.text = string(dw_1.Object.hjhs[1])
    else
    em_1.text = '0'
    end if

    七、如何使数值0显示为空白
    在Detail上选中相应的字段(数值型),在属性(Properties)中的Expressions的color栏输入:
    if(字段名 = 0, rgb(255,255,255), rgb(0,0,0))

    八、如何确定多选的行
    用isselected()
    选择:
    long CurRow
    boolean result
    CurRow = dw_employee.GetRow()
    result = dw_employee.IsSelected(CurRow)
    IF result THEN
      dw_employee.SelectRow(CurRow, FALSE)
    ELSE
      dw_employee.SelectRow(CurRow, TRUE)
    END IF
    应用:
    for currow = 1 to dw_1.rowcount()
      if dw_employee.IsSelected(CurRow) then
         ...
      end if
    next

  • 相关阅读:
    树莓派写Python程序输入不了#
    树莓派系统安装、HDMI显示
    网络七层协议
    TCP协议中的三次握手和四次挥手(图解)(转载http://blog.csdn.net/whuslei/article/details/6667471)
    英语积累
    读《淘宝技术这十年》--笔记
    关于imx6核心板qt系统U盘挂载
    《赢在测试2》-- 推荐的阅读书籍
    三月,关于团队管理的重要性
    自动化测试及工具的一点理解
  • 原文地址:https://www.cnblogs.com/Bokeyan/p/11775271.html
Copyright © 2020-2023  润新知