Есть форма (BorderStyle=Sizable), на ней элемент управления SSTab1 (вкладки). SSTab1 имеет три вкладки (имена - по умолчанию - любые). На одной из вкладок расположены два элемента: Label1 и TextBox1. На других вкладках, для наглядности, вообще ничего нет.
В программе есть код, управляющий изменением размеров элементов управления в зависимости от размеров формы (размеры в Twips):
- Код: Выделить всё
Option Explicit
...
Public Borders As Integer
Private Sub Form_Load()
...
Borders = 100
End Sub
Private Sub Form_Resize()
On Error Resume Next
SSTab1.Width = Me.ScaleWidth - Borders * 3
SSTab1.Height = Me.ScaleHeight - Borders * 3
Label1.Left = SSTab1.Left + Borders * 3
Label1.Top = SSTab1.Top + Borders * 4
TextBox1.Left = SSTab1.Left + Borders * 3 + Label1.Width
TextBox1.Top = Label1.Top
TextBox1.Width = SSTab1.Width - Borders * 4 - Label1.Width
End Sub
Как видите, все просто, все работает - размеры Лэйбла и ТексБокса меняются при изменении размеров формы.
Баги начинаются, когда активна любая другая вкладка (щелкните на другой вкладке, где нет элементов управления). Теперь, меняя размеры формы, Лэйбл и ТексБокс появляются на другой вкладке, где их быть совсем не должно (хотя размеры правильны).
Этот глюк появляется только (во всяком случае в этом примере) при использовании свойства Left этих двух контролов. Если закомментировать строки кода, в которых встречается ".Left", то все будет в порядке, то есть глюков не будет, однако и код тогда неправильным будет.
Что делать?