2017-07-15 91 views
0

我想创建一个通用程序,即.i,我可以从a.w调用,并根据我的条件改变浏览器的颜色。我如何通过.i更改浏览器颜色?如何更改正在浏览的浏览器颜色4gl?

+0

嗨!如果你在代码堆栈中创建一个最小,完整和可验证的例子(http://stackoverflow.com/help/mcve),以便将来可以在Stack溢出时使用,那将会更好。 - 谢谢 – Momin

回答

1

我想你想改变浏览线的颜色。但我不相信你能够为此做出包容,因为你必须单独命名这些字段以简单的方式来完成这个任务。因此,让我们假设您有一个名为br-cust的浏览器,显示您在其中显示客户编号,名称和信用额度的客户表。

你需要一个行显示事件添加到浏览,在其中你会说

ON ROW-DISPLAY OF BROWSE br-cust DO: 
    DEFINE VARIABLE iBgColor AS INTEGER NO-UNDO. 

    ASSIGN iBgColor = IF customer.credit-limit < 2000 THEN 9 ELSE 15 
      customer.cust-num :bgcolor in browse br-cust = iBgColor 
      customer.name  :bgcolor in browse br-cust = iBgColor 
      customer.credit-limit:bgcolor in browse br-cust = iBgColor. 

END. 

这将通过更改浏览背景色为红色工作,如果授信额度为低(< 2000)或者白色,如果没关系。如果您想更改字体颜色,请使用:color代替。

现在,如果你想给它任何给定的浏览能力,根据条件改变颜色,这也是可能的,但需要更多的代码。我会尽快发布解决方案,因为我现在无法访问进度。

但我希望这有助于。

1

如果您需要在包含中使用着色逻辑,您可以使用预处理器来完成。创建像这样的包含(例如colorbrs.i):

ON ROW-DISPLAY OF {&Brs} 
DO: 
    ASSIGN 
     {&Tbl}.{&Fld1}:FGCOLOR IN BROWSE {&Brs} = 12 
     {&Tbl}.{&Fld1}:BGCOLOR IN BROWSE {&Brs} = 9. 
END. 

花括号是预处理器。他们在编译时填写。您在.W定义它们是这样的:

{colorbrs.i &Brs=brsCust &Tbl=Customer &Fld1=Cust-Num} 

当您编译.W,编译器会从包括陈述的值,并将其填充到包含文件中的预处理器。

+0

而不是使用表名称我可以使用浏览器颜色的句柄?因为我没有浏览器中的静态表。 – Nidhi

+0

表名预处理器不一定是数据库表。只需将其设置为您在浏览器查询中使用的任何表。 – TheDrooper