私はこれをしたい:
Const COLOR_GREEN = &H00FF00
Me.Label1.BackColor = COLOR_GREEN
ただし、vbが&H00FF00を&HFF00に変換することを自動的に決定するという問題があるため、代わりにこれを取得します。
Const COLOR_GREEN = &HFF00
Me.Label1.BackColor = COLOR_GREEN
10進値COLOR_GREENは65280ではなく-256になり、背景は緑ではなく黒になりました。 #00FF00を使用してフォームデザインモードで色を完全にうまく設定できるので、これは面倒です。
フォームデザインモードで色を#00FF00に設定するのとvbで同等のものは何ですか?
リテラル&H0000FF00&
を試しましたか?次のコードは私にとっては問題なく機能します。
Const COLOR_GREEN = &H0000FF00&
Me.Label1.BackColor = COLOR_GREEN
もちろん、VB 6は自動的にこれに折りたたまれますが、2つの値は完全に同等であるため、これでも問題なく機能します。数値的に:
Const COLOR_GREEN = &HFF00&
Me.Label1.BackColor = COLOR_GREEN
トリックは、値をLong
ではなくInteger
として宣言する必要があることです。数値リテラルの後にアンパサンド(&
)を置くこれを達成します。
これは、期待する65280ではなく-256の値が表示される理由も説明しています。値65280は長すぎて、Integer
に収まりません。そのデータ型がオーバーフローすると、VB 6が再びラップアラウンドし、-256を生成します。
VB 6の16進リテラルは、おそらくWebおよびHTMLプログラミングでおなじみのものと同等ではないことにも注意してください。そこにあるRRGGBB表記の代わりに、- VB 6はBBGGRR表記、または&H00BBGGRR&
を使用します。これは、下位バイトが青ではなく赤であるネイティブWin32 COLORREF
構造と同じです。
もちろん、ここに示したような標準の色の値の場合は、vbGreen
などのVBリテラルを使用する方がよいでしょう。
Me.Label1.BackColor = vbGreen
Vbの16進表記で先行ゼロを保持することはできません。数値リテラル(&H*
を含む)はデフォルトで16ビット整数であり、32ビットの定数リテラル接尾辞に&
を付けて、暗黙的に長いことを示します。
Const COLOR_GREEN = &HFF00&
?COLOR_GREEN
65280
Colortranslatorを使用できます
dim myColor as new Color
myColor=ColorTranslator.fromHTML("#ff0000") 'Red color