[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2006/06/04(Sun) 18:49
投稿者名:べた
Eメール:
URL :
タイトル:
ボタン色「&H8000000F」をRGB値に変換するには?
ボタン色「&H8000000F」をRGB値に変換するには?

VB6で、フォームのボタン色はプロパティで&H8000000Fとなっていますが、
これをRGB値に変換したいのですが、上手く値を求めることができません。
どうすればよいのでしょうか。
また、10進への変換もあるのですが、求めた16進からどのよにすれば10進
を求められますか。

1.
Command1.BackColor = &H8000000F
s = Hex(Command1.BackColor)
s = String(8 - Len(s), "0") & s
R = "&H" & Mid(s, 7, 2)
G = "&H" & Mid(s, 5, 2)
B = "&H" & Mid(s, 3, 2)
Debug.Print s
Debug.Print R; G; B

この場合、動くことには動いたのですが、求められた値が正しくない。
「0F0000」で、実際調べてみる黒色でした。

ためしに、緑「&HCC00&」でやってみると、
「00CC00」と正しくなります。

2.
s = Hex(Command1.BackColor)
s = String(8 - Len(s), "0") & s
c = Mid(s, 7, 2)
R = c And &HFF
c = Mid(s, 5, 2)
G = (c And &HFF00&) \ &H100
c = Mid(s, 3, 2)
B = (c And &HFF0000) \ &H10000
Debug.Print s
Debug.Print R; G; B

この場合、「c = Mid(s, 7, 2)」で型が異なるとエラーになって
しまいます。

投稿時間:2006/06/04(Sun) 18:55
投稿者名:K.J.K.
Eメール:
URL :
タイトル:
Re: ボタン色「&H8000000F」をRGB値に変換するには?
API関数のOleTranslateColorもしくはGetSysColorを利用してください。

投稿時間:2006/06/05(Mon) 08:06
投稿者名:ダンボ
Eメール:
URL :
タイトル:
Re: ボタン色「&H8000000F」をRGB値に変換するには?
> VB6で、フォームのボタン色はプロパティで&H8000000Fとなっていますが、

先頭ビットが立っているときは、「下3バイトがRBG値」というルールじゃなくなっています。