Я пытаюсь добавить динамические элементы управления в разные кадры в пользовательской форме.Я работаю над Outlook 2016.
Я хочу, чтобы они отображались по строке 3 в каждом кадре, который у меня есть, для каждого моего пользователя, а затем еще 3, прямо под первым и так далее.Пример:
Frame1 Frame2
Label1 Label2 Label3 Label1 Label2 Label3
-user1 -user1 -user1 -user1 -user1 -user1
-user2 -user2 -user2 -user2 -user2 -user2
...
Теперь я получаю https://imgur.com/a/FWtshTt
В моем примере это будет выглядеть так:
Frame1
Label1 Label2 Label3
-lastUserOfTheList -lastUserOfTheList -lastUserOfTheList
Код:
В настоящее время я могу создавать свои элементы управления, но кажется, что все они перекрываются, хотя я устанавливаю их свойства Left и Top.
Я устанавливаю новый элемент управленияс этим:
Set opBtn = Me.Frame1.Controls.Add("Forms.OptionButton.1")
И затем я устанавливаю свойства, вызывая другой сабвуфер, которому я даю несколько аргументов:
Call setControlProperties(userNumber, optionButtonCaption, opBtn, x)
Этот саб действительно содержит:
With opBtn
.Left = x * 36
.Top = 18 + (userNumber * 18)
.Caption = optionButtonCaption
.Height = 36
.Width = 48
.ZOrder (0)
End With
x
- это целочисленная переменная, которую я использую для увеличения свойства Left, чтобы элементы управления не перекрывались (но пока они имеют место).userNumber
- еще одна целочисленная переменная, которую я использую для увеличения свойства Top.У каждого пользователя своя «Топ ценность».OpBtn
- это переменная MSForms.Control.
Я уверен, что мои кадры достаточно широки для размещения динамических элементов управления.
Вопрос: У меня следующий вопрос: Кто-нибудь знает, почему эти элементы управления перекрываются, несмотря на то, что я устанавливаю их свойства .Top и .Left разными?
PS: Это мой первый пост, поэтому я надеюсь, что ничего не забыл.
Редактировать 1: Я поместил код, содержащийся в setControlProperties, сразу после
Set opBtn = Me.Frame1.Controls.Add("Forms.OptionButton.1")
, как это было предложено, но он все еще перекрывается.Дальнейшего прогресса пока нет.
Редактировать 2: Я добавил свойство GroupName в свой элемент управления opBtn, и теперь некоторые элементы управления немного превышают перекрытие.Теперь я уверен, что это совпадение, но я до сих пор не могу понять, почему.
Редактировать 3: Я использовал окно просмотра вместе с f8 (строка за строкой), чтобы наблюдатьзначение моих opBtn.Left и opBtn.Top во время выполнения.Оба всегда правильно увеличиваются.Я также пытался изменить все свойства объекта OptionButton, но всегда получал один и тот же результат.
Редактировать 4: Я добавил имя и заставил элемент управления быть видимым, но это не имело никакого эффекта.
Set opBtn = Me.Frame1.Controls.Add("Forms.OptionButton.1", "dynamicButton" & x, True)