我想做这个:
Const COLOR_GREEN = &H00FF00
Me.Label1.BackColor = COLOR_GREEN
Run Code Online (Sandbox Code Playgroud)
然而有一个问题是,vb自动决定将&H00FF00转换为&HFF00,所以我得到了这个:
Const COLOR_GREEN = &HFF00
Me.Label1.BackColor = COLOR_GREEN
Run Code Online (Sandbox Code Playgroud)
小数值COLOR_GREEN现在是-256而不是65280,所以背景是黑色而不是绿色!这很烦人,因为我可以使用#00FF00在表单设计模式中完美地设置颜色.
在表单设计模式下将颜色设置为#00FF00的等效值是多少?
Cod*_*ray 23
你试过这个文字&H0000FF00&
吗?以下代码对我来说很好用:
Const COLOR_GREEN = &H0000FF00&
Me.Label1.BackColor = COLOR_GREEN
Run Code Online (Sandbox Code Playgroud)
当然,VB 6自动折叠到这一点,因为这两个值仍然工程只是罚款完全等效的数字:
Const COLOR_GREEN = &HFF00&
Me.Label1.BackColor = COLOR_GREEN
Run Code Online (Sandbox Code Playgroud)
诀窍是值需要声明为a Long
而不是a Integer
.将&
数字文字后面的&符号放在一起就可以实现这一点.
这也解释了为什么你看到的值为-256而不是你期望的65280.值65280太长而不适合Integer
,当它溢出该数据类型时,VB 6再次将其包裹起来,产生-256.
值得注意的是,VB 6中的十六进制文字将不等同于您可能熟悉的Web和HTML编程中的十六进制文字.VB 6使用BBGGRR表示法,或者&H00BBGGRR&
COLORREF
与低位字节为红色而不是蓝色的本机Win32 结构相同,而不是您在那里找到的RRGGBB表示法.
当然,请注意,对于标准颜色值,例如您在此处显示的颜色值,您最好使用VB文字,例如vbGreen
:
Me.Label1.BackColor = vbGreen
Run Code Online (Sandbox Code Playgroud)
您不能以vb的十六进制表示法保留前导零.数字文字(inclding &H*
)默认为16位整数,32位常量文字后缀&
用于隐式表示其长整数;
Const COLOR_GREEN = &HFF00&
?COLOR_GREEN
65280
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
46095 次 |
最近记录: |