vb6在运行时使用背景中的标签更改SSTab的颜色

时间:2009-03-10 11:40:04

标签: vb6

我正在尝试更新旧的VB6应用程序。我正在努力在运行时更改SSTab控件的背景颜色。

我知道我不能将Backcolor设置为所需的颜色。

在设计时我在每个标签上创建了一个标签,然后将标签大小调整为sstab尺寸。然后我将标签设置为背景色。这很好。

但是,我真正想要做的是在运行时执行此操作,以便将来在表单上添加新的选项卡控件时,我不需要每次在设计时手动执行此操作。

如果有人能指出我在正确的方向上在运行时在SSTab控件的每个选项卡上创建和显示标签,我将不胜感激?

我的所有标签上都没有框架,所以我不想使用框架容器来固定标签。我宁愿在运行时将标签放在标签容器上。

谢谢,我期待着您的回复。

2 个答案:

答案 0 :(得分:4)

正如svinto所说,你可以为控制阵列加载新的控件,但它还有更多的控制。

首先,新控件不可见,因此您必须设置.Visible = True 您还需要在创建控件之前设置当前选项卡,以使其位于该选项卡上。

假设您已在第一个标签上找到第一个标签:

For i = 1 To Me.SSTab1.Tabs - 1
    Me.SSTab1.Tab = i
    Load lblOne(i)
    lblOne(i).Visible = True
Next

此外,这在Form_Load事件中不起作用,但在Form_Activate中起作用

还有另一种方法可以从头开始创建标签而不是使用控制数组,这可能更好,因为您不需要将第一个标签添加到表单中:

Private Sub Form_Activate()
    Dim lbl() As Label
    Dim i As Integer
    Dim name As String

   ReDim lbl(SSTab1.Tabs - 1)
   For i = 0 To Me.SSTab1.Tabs - 1
        Me.SSTab1.Tab = i
        name = "MyLabel" & CStr(i)
        Set lbl(i) = Form1.Controls.Add("VB.Label", name)
        Set lbl(i).Container = Me.SSTab1
        lbl(i).Visible = True
        lbl(i).Caption = name
        lbl(i).Move 40, 345
        lbl(i).BackColor = vbGreen
    Next
End Sub

答案 1 :(得分:2)

在设计时创建一个标签,并将其索引设置为0.稍后可以执行Load labelname(newindex)以创建更多标签实例。创建后定位它们,设置背景颜色,你就完成了。