Ответ 1
Пробовали ли буквальный &H0000FF00&
? Следующий код работает отлично для меня:
Const COLOR_GREEN = &H0000FF00&
Me.Label1.BackColor = COLOR_GREEN
Конечно, VB 6 автоматически сворачивает его на это, что по-прежнему отлично работает, потому что два значения полностью эквивалентны:
Const COLOR_GREEN = &HFF00&
Me.Label1.BackColor = COLOR_GREEN
Фокус в том, что значение должно быть объявлено как Long
, а не Integer
. Помещение амперсанда (&
) после выполнения числового литерала.
Это также объясняет, почему вы видите значение -256 вместо 65280, которое вы ожидаете. Значение 65280 слишком велико, чтобы соответствовать Integer
, и когда он переполняет этот тип данных, VB 6 снова обматывает его, производя -256.
Также стоит отметить, что шестнадцатеричные литералы в VB 6 не будут эквивалентны тем, которые вы, вероятно, знакомы с веб-и HTML-программированием. Вместо обозначений RRGGBB, которые вы там находите, VB 6 использует обозначение BBGGRR или &H00BBGGRR&
, то же самое, что и родная структура Win32 COLORREF
, где младший байт является красным, а не синим.
Конечно, обратите внимание, что для стандартных значений цвета, таких как показанные здесь, вам, вероятно, лучше использовать литералы VB, например vbGreen
:
Me.Label1.BackColor = vbGreen