注册 登录
编程论坛 VB6论坛

内容相同的label为一种颜色

snrtjat 发布于 2013-05-18 15:47, 705 次点击
在学习VB实践中碰到这样一个问题:
在窗体中有40个label(label1到label40),每个label中都显示了三个字符(如:40R、43J、44P等)
如何让相同内容的label显示一种颜色
(如:Label.caption=70R的为一种颜色  
      Label.caption=43J的为一种颜色
      Label.caption=B4P的为一种颜色
  ……)
请各高手赐教……


7 回复
#2
bczgvip2013-05-18 19:49
颜色呢?随机么?
#3
snrtjat2013-05-18 19:52
是的
#4
益西翁登2013-05-18 19:56
告诉我你的联系方式,我告诉你怎么弄
#5
风吹过b2013-05-18 20:41
程序代码:
Option Explicit

Private Sub Command1_Click()

Dim k(1 To 3) As String
Dim c(1 To 3) As Long
Dim i As Long
Dim o As Object

k(1) = "40R"
k(2) = "43J"
k(3) = "44P"

'随机填内容 ,针对所有的 标签
For Each o In Form1.Controls
    If TypeName(o) = "Label" Then
        i = 1 + Int(Rnd() * 3)
        o.Caption = k(i)
    End If
Next

For i = 1 To 3              '产生随机颜色
    c(i) = Int(Rnd() * 16777216)
Next i
   
'根据内容设置颜色
For Each o In Form1.Controls
    If TypeName(o) = "Label" Then
        Select Case o.caption
            Case "40R"
                o.ForeColor = c(1)
            Case "43J"
                o.ForeColor = c(2)
            Case "44P"
                o.ForeColor = c(3)
        End Select
    End If
Next

End Sub
#6
snrtjat2013-05-19 00:44
版主"风吹过b":非常感谢你的多次帮忙!
“40R、43J、44P……”是隔一段时间就会有变化的,
只有本站会员才能查看附件,请 登录
下一次有可能就更新为:
只有本站会员才能查看附件,请 登录

还请帮忙优化一下,谢谢!
#7
风吹过b2013-05-19 10:44
For Each o In Form1.Controls
    If TypeName(o) = "Label" Then
        Select Case o.caption
            Case "40R"
                o.ForeColor = c(1)
            Case "43J"
                o.ForeColor = c(2)
            Case "44P"
                o.ForeColor = c(3)
            case else               '所以都不成立时 ,加这一组
                o.ForeColor = 0        '黑色
        End Select
    End If
Next

重新执行这一段就可以了。这一段就是 填色。
如果你还有更多的值,要么 增加 select 处理的组,要么你用数组来保存值和颜色,使用 FOR 循环来查找值来填色。
------------------
For i = 1 To 3              '产生随机颜色
    c(i) = Int(Rnd() * 16777216)
Next i
这一段是随机产生颜色, 如果你颜色确定了,那自然可以不要这段了。

----------
再前面部分是 随机产生数据用来调试用的。

[ 本帖最后由 风吹过b 于 2013-5-19 10:46 编辑 ]
#8
snrtjat2013-05-19 21:39
非常感谢你的帮忙!
祝生话愉快!天天都有好心情!
1