2009-03-10 1 views
2

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

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

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

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

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

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

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

ответ

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 
2

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

+0

Это то, что вам нужно сделать. –