注册 登录
编程论坛 VB6论坛

将label 相同内容最多的label设为一种颜色

snrtjat 发布于 2013-06-07 14:41, 691 次点击
只有本站会员才能查看附件,请 登录

将上图中的32个label,按相同内容去区分,根据内容从最多的label到最少的label去显示颜色
控件check的作用是将内容相同最多的一组label颜色显示为::&HFF00&
如:内容为:"Label1"的共有22个
    内容为:"Label2"的共有5个
    内容为:"Label3"的共有5个
    根据上面的数据,当按下check时将内容为:"Label1"的label颜色设为:&HFF00&
控件clear的作用是将颜色为:&HFF00&的label清空并将颜色还原。
注意:label.Caption是随机输入的,不是指定的哟。

求高手指点,我不知道怎么去判定找出内容相同并最多的label?
4 回复
#2
风吹过b2013-06-07 15:27
1、如果  label 组成的是 控件数组,那么直接对控件数组操作。
2、如果 不是,那么对窗体的 label 操作。

代码是第二种情况的代码

程序代码:
Option Explicit

Private Sub Command1_Click()
Dim o As Object

'清背景色
For Each o In Form1.Controls
    If TypeName(o) = "Label" Then
        o.BackColor = &H80000005
    End If
Next o

End Sub

Private Sub Command2_Click()

Dim s(32) As String
Dim sj(32) As Long
Dim i As Long, j As Long
Dim k As String
Dim n As Long

j = 0

'搜索所有标签,并统计内容的数据
Dim o As Object
For Each o In Form1.Controls
    If TypeName(o) = "Label" Then       '为标签
        k = o.Caption                   '取内容
        For i = 1 To j                  '搜索是否保存了
            If s(i) = k Then            '如果存在
                Exit For                '退出循环
            End If
        Next i
        If i > j Then                   '如果没的搜索到
            s(i) = k                    '取标签内容
            j = j + 1                   '标签种类计数 +1
        End If
        sj(i) = sj(i) + 1               '统计 +1
    End If
Next

'搜索所有的统计结果,找出最大的那个下标
n = 1
For i = 2 To j
    If sj(n) < sj(i) Then
        n = i
    End If
Next i

'搜索所有的标签,找到 统计结果最多的那个标签,然后加颜色
For Each o In Form1.Controls
    If TypeName(o) = "Label" Then
        k = o.Caption
        If k = s(n) Then
            o.BackColor = &HFF00&
        End If
            
    End If
Next

End Sub
#3
snrtjat2013-06-07 15:53
非常感谢你的帮忙。
#4
snrtjat2013-06-07 16:11
试了一下,Label的内容为空的应该也要排除的,不然当控件clear清空后,内容为空的label数量就是最多的了。
应该怎么修改呢?
#5
snrtjat2013-06-07 16:22
搞的太快了,只能怪自己没有动脑子,现在已做出来了.
在这里非常感谢您非常即时的答复。谢谢!
1