如何解决Progress-4GL 有颜色常数吗?
在我的应用程序中,我需要修改小部件的颜色。
当我查看我的应用程序时,我看到以下代码行:
BGCOLOR 25 FGCOLOR 24 .
BGCOLOR 21 FGCOLOR 20 .
BGCOLOR 8 FGCOLOR 24 .
... (and many more)
当然,这是非常不可读的。
Progress-4GL 是否有任何颜色常量,例如 clRed
、clGreen
、...,出于可读性原因我可以使用?如果没有,是否有此主题的在线“备忘单”?
谢谢
解决方法
不是真正的常量。但是颜色数字是指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
color1=0,128
color2=0,128,0
color3=0,128
color4=128,0
color5=128,128
color6=128,0
color7=128,128
color8=192,192,192
color9=0,255
color10=0,255,0
color11=0,255
color12=255,0
color13=255,255
color14=255,0
color15=255,255
或在注册表中(例如在 HKEY_CURRENT_USER\SOFTWARE\PROGRESS\11.7\Colors 中:
如果您的运行时使用 ini 或注册表基于启动参数 -basekey ini -ininame 。
颜色 0 到 15 不应该修改。
,为了便于阅读,根据您在 ini 文件或注册表中定义颜色的方式,使用 enum
或 preprocessors
来定义您想要的颜色。
// 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.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。