| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2424 人关注过本帖
标题:创建多个label控件,不是数组,数量会有变化怎么弄的?
取消只看楼主 加入收藏
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
结帖率:87.21%
收藏
已结贴  问题点数:20 回复次数:3 
创建多个label控件,不是数组,数量会有变化怎么弄的?
Private WithEvents 查看 As Label

           Lname =  J ’变量
            Set 查看 = Me.Controls.Add("VB.Label", Lname)
             With 查看
                 .Visible = True
                 .Caption = "OK"
                 .Left = 5 * J + X - 2
                 .Top = T / 150 + Y + 8
                 .Width = 2
                 .Height = 4
                 .ForeColor = vbGreen '
                 .BackStyle = 0
                 .ToolTipText = rs.Fields("维修日期")
             End With
我可以动态生成控件,但是只有最后一个控件可以响应单机或鼠标事件,怎么处理?不适用数组。
 Controls.Remove Lname  '删除已创建的控件label

'--------------------------------------
'清空label控件
    For Each Label In Me.Controls
           If TypeOf Label Is Label Then        
                 Controls.Remove Label.Name
           End If
    Next
'--------------------------------------
搜索更多相关主题的帖子: 维修 
2013-06-09 08:10
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
风老师!我尝试使用数组,但是我的.Index数值不是有规律的,可能是1.2.3.4,也可能是1.4.9,这样的话,如果要删除所有已创建的控件该招人么做的?

用 for因为.Index不确定所以不方便,
For Each Label In Me.Controls
           If TypeOf Label Is Label Then
                  Unload Me.Label1(Label1.Index)
           End If
 Next
这个好像也不行

学习--------------学习-------------------学习--------------------!!
2013-06-09 13:06
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
已经搞定,代码发出来供大家参考:
目的:创建label控件数组,数组的index值不固定为任意值,
Private WithEvents Label1 As Label'声明

'-----------------------------------------------
        '判断获得的日期是星期几
        J = Weekday(rs.Fields("日期")) '取得值
        If J = 1 Then
           J = J + 6
        Else
           J = J - 1
        End If
        '------------------------------------------------
            Load Me.Label1(J) '加载控件,index值为按星期天数设定,因为记录有可能存在断档,所以不一定INDEX是1234567,有可能是137
             With Me.Label1(J)
                 .Visible = True
                 .Caption = "OK"
                 .Left = 5 * J + X - 2  'X坐标
                 .Top = T / 150 + y + 8  'Y坐标
                 .Width = 2    '宽度
                 .Height = 4   '高度
                 .ForeColor = vbGreen '字体颜色
                 .BackStyle = 0
                 .ToolTipText = rs.Fields("日期")
             End With
’删除所有创建了的label控件数组
For Each Label In Me.Controls
        If TypeOf Label Is Label Then
           I = Label.Index
             If I > 0 Then
                Unload Me.Label1(I)
             End If
       End If
Next

学习--------------学习-------------------学习--------------------!!
2013-06-09 14:54
wxflw
Rank: 6Rank: 6
等 级:侠之大者
帖 子:325
专家分:435
注 册:2012-1-29
收藏
得分:0 
回复 6楼 风吹过b
为什么我声明了:Private WithEvents Label1 As Label

Private Sub Label1_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
红色部分不能用?用了就提示声明错误,如果去掉红色部分就不响应这个事件


把那个声明去掉就正常了,是怎么回事?

学习--------------学习-------------------学习--------------------!!
2013-06-09 17:16
快速回复:创建多个label控件,不是数组,数量会有变化怎么弄的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016021 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved