16進数の1〜Fを01〜0Fと表示させるには?

解決


サイ  2004-11-15 01:51:14  No: 117582

初めまして、サイと申します。
開発環境はvisual basic6.0です。
RGBの値をそれぞれ3つのスクロールバーで指定し、その結果を10進数でテキストボックス1〜3に、16進数に変換した結果をテキストボックス4に表示させ、フォームのバックカラーを変えるというプログラムを作っています。
16進数の0〜Fを00、01...0E、0Fというように表示させたいのですが、上手く出来ません。
現在コードは以下のようにしています。

Private Sub HScroll1_Change()
Text1.Text = HScroll1.Value
form1.BackColor = RGB(HScroll1.Value, HScroll2.Value, HScroll3.Value)

aa1$ = Hex$(HScroll1.Value)
aa2$ = Hex$(HScroll2.Value)
aa3$ = Hex$(HScroll3.Value)
Text4.Text = aa1$ + aa2$ + aa3$

If aa1$ = "0" Then Text4.Text = "00" + aa2$ + aa3$
If aa1$ = "1" Then Text4.Text = "01" + aa2$ + aa3$


If aa2$ = "0" Then Text4.Text = aa1$ + "00" + aa3$
If aa2$ = "1" Then Text4.Text = aa1$ + "01" + aa3$


If aa3$ = "E" Then Text4.Text = aa1$ + aa2$ + "0E"
If aa3$ = "F" Then Text4.Text = aa1$ + aa2$ + "0F"

aa1$ = Hex$(HScroll1.Value)以下のコードを他の2つのスクロールバーにも記述しています。
これだと、1つのスクロールバーを動かした場合には01などとちゃんと表示されるのですが、別のスクロールバーを動かすと0が消滅してしまいます。
どうすれば上手く0が表示されるのか教えていただけないでしょうか?
もしくはもっと効率良く表示させる方法があればご教授下さい。
お願いします。


匿名  2004-11-15 08:04:15  No: 117583

type tLong
  n as long
end type
type tBytes
  n(1 to 4) as byte
end type

function ColToHexStr(byval col as long) as string
dim vLong as tLong
dim vBytes as tBytes
dim v as variant
vLong.n=col
lset vBytes=vLong
for each v in vBytes.n
  ColToHexStr=right$("0"+hex$(v),2)+ColToHexStr
next
end function

ゎはは。


LESIA  2004-11-15 18:10:24  No: 117584

aa1$ = Right$("00" & Hex$(HScroll1.Value), 2)
aa2$ = Right$("00" & Hex$(HScroll2.Value), 2)
aa3$ = Right$("00" & Hex$(HScroll3.Value), ")
Text4.Text = aa1$ & aa2$ & aa3$


サイ  2004-11-16 07:08:28  No: 117585

有難うございました!
無事に出来るようになりました!!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加