• 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

  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/Bokeyan/p/11775271.html
Copyright © 2020-2023  润新知