VB6 изменение цвета SSTab во время выполнения с использованием метки в фоновом режиме - PullRequest
2 голосов
/ 10 марта 2009

Я пытаюсь обновить старое приложение VB6. Я борюсь с изменением заднего цвета элемента управления SSTab во время выполнения.

Я знаю, что не могу просто установить задний цвет на нужный цвет.

Во время разработки я создал ярлык на каждой вкладке, а затем изменил размер ярлыка до размеров sstab. Затем я установил метку backcolor. Это отлично работает.

Однако я действительно хочу сделать это во время выполнения, чтобы в случае добавления в форму нового элемента управления вкладками в будущем мне не приходилось делать это каждый раз вручную во время разработки.

Буду признателен, если кто-нибудь укажет мне правильное направление для создания и отображения метки на каждой вкладке элемента управления SSTab во время выполнения?

У меня нет рамок на всех вкладках, поэтому я не хочу использовать контейнер рамок для хранения метки. Я бы предпочел просто поместить ярлык на контейнер вкладок во время выполнения.

Спасибо, и я с нетерпением жду ваших ответов.

Ответы [ 2 ]

4 голосов
/ 10 марта 2009

Как говорит 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
2 голосов
/ 10 марта 2009

Создайте одну метку во время разработки и установите для ее индекса значение 0. Позже вы можете сделать Load labelname(newindex), чтобы создать больше экземпляров метки. Разместите их после создания, установите цвет фона, и все готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...