|
▼西谷 さくら さん:
こんばんわ
>動きました。すごぃ!!この手法の理屈は何なのでしょうか?
>もし、説明して頂ければありがたいです。
原因がよく分からなかったので、とりあえず Enabled を False にしたときに
BackColor・ForeColor を共にデフォルトの システムカラーに設定してみたというだけです。
システムカラー
http://www.shifrol.co.jp/Cdb2/Manual/Design/ColorWinSystem.html
その後、少し調べてみたのですが、結局原因らしいものは分かりませんでした。
お役に立てず、すいません。
ただ、少し検証したところ影響しているのは BackColor のようです。
全て試したわけではないのですが、
BackColorをプロパティウィンドウでパレットの2段目に指定してやると、
モノクロ以外どの色でもEnabled を False にした時 ForeColor は淡色表示されます。
パレットの1段目では全て淡色表示にはならないようです。
3段目・4段目は(モノクロも含め)なったりならなかったりみたいです。
5段目・6段目も全て淡色表示にはならないようです。
どなたか詳しい方フォロー願います。
ご参考までに(参考にならない?)
検証時に使用したコード
'************************************************************************************
'コマンドボタン1つ、スピンボタン1つ、ラベル1つを用意
'ループ脱出処理はしていないので段階数、表示停止時間に注意してください
'************************************************************************************
Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long)
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim r As Integer
Dim g As Integer
Dim b As Integer
Dim iStep As Integer
Const cStep As Integer = 8 '段階数
Const tSleep As Integer = 100 '表示停止時間( 1/1000 秒単位)
SpinButton1.Enabled = False
iStep = Round(256 / cStep)
For i = 0 To cStep
If i * iStep < 256 Then r = i * iStep Else r = 255
For j = 0 To cStep
If j * iStep < 256 Then g = j * iStep Else g = 255
For k = 0 To cStep
If k * iStep < 256 Then b = k * iStep Else b = 255
SpinButton1.BackColor = RGB(r, g, b)
DoEvents
Label1.Caption = "RGB(" & CStr(r) & ", " & CStr(g) & ", " & CStr(b) & ") "
Sleep tSleep
Next k
Next j
Next i
End Sub
|
|