【问题标题】:Does Progress-4GL have color constants?Progress-4GL 有颜色常数吗?
【发布时间】:2023-03-20 03:35:01
【问题描述】:

在我的应用程序中,我需要修改小部件的颜色。

当我查看我的应用程序时,我看到以下代码行:

BGCOLOR 25 FGCOLOR 24 .
BGCOLOR 21 FGCOLOR 20 .
BGCOLOR  8 FGCOLOR 24 .
... (and many more)

当然,这是非常不可读的。

Progress-4GL 是否有任何颜色常量,例如 clRedclGreen、...,出于可读性原因,我可以使用这些常量吗?如果没有,是否有针对此主题的在线“备忘单”?

谢谢

【问题讨论】:

    标签: colors openedge progress-4gl


    【解决方案1】:

    为了便于阅读,请使用 enumpreprocessors 根据您在 ini 文件或注册表中定义颜色的方式来定义您想要的颜色。

    // color.cls
    enum color:
    
       define enum
          black       = 0
          dark-blue   = 1
          dark-green  = 2
          dark-cyan   = 3
          dark-red    = 4
          dark-purple = 5
          
          // ...      
          
          white = 15
          .
    
    end enum.
    

    不幸的是,当 fgcolor 需要时,枚举不会自动转换为其整数值:

    define frame fr
    with
       bgcolor integer( color:dark-purple )
       .
       
    view frame fr.
    wait-for close of frame fr.
    

    使用预处理器会简单一些:

    // color.i
    &global define color-black        0
    ...
    &global define color-dark-purple  5
    &global define color-white       15
    

    然后使用它们:

    { color.i }
    
    define frame fr
    with
       bgcolor {&color-dark-purple}
       .
       
    view frame fr.
    wait-for close of frame fr.
    

    【讨论】:

    • 由于我们以非面向对象的方式使用 Progress-4GL,我更喜欢预处理器包含的方式。
    【解决方案2】:

    不是真正的常数。但颜色编号指的是 progress.ini 或 Windows 注册表中的 RGB 值。

    在 progress.ini 文件中,它位于 [Colors] 部分:

    [Colors]
    ;******************************************************************************
    ; THE DEFINITION OF COLOR 0 THROUGH 15 IS PRIVATE TO THE PROGRESS ADE.  
    ; MODIFYING COLORS 0 THROUGH 15 MAY PREVENT THE PROGRESS ADE FROM RUNNING.
    ; The following color definitions correspond to the ADE standards.
    ;  0 to 15  - reserved
    color0=0,0,0
    color1=0,0,128
    color2=0,128,0
    color3=0,128,128
    color4=128,0,0
    color5=128,0,128
    color6=128,128,0
    color7=128,128,128
    color8=192,192,192
    color9=0,0,255
    color10=0,255,0
    color11=0,255,255
    color12=255,0,0
    color13=255,0,255
    color14=255,255,0
    color15=255,255,255
    

    或在注册表中(例如在 HKEY_CURRENT_USER\SOFTWARE\PROGRESS\11.7\Colors 中:

    如果你的运行时使用 ini 或者注册表是基于启动参数的 -basekey ini -ininame 。

    颜色 0 到 15 不应修改。

    【讨论】:

      猜你喜欢
      • 2020-06-08
      • 2014-12-07
      • 2014-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-03-08
      • 2017-07-18
      相关资源
      最近更新 更多