Установка порядка табуляции элементов управления в кадре
В этом примере используется свойство TabIndex для отображения и задания порядка вкладок для отдельных элементов управления. Свойство TabIndex — это свойство Microsoft Forms 2.0, которое применяется к каждому элементу управления, который может существовать в frame. Для перехода к следующему элементу управления и отображения свойства TabIndex этого элемента управления необходимо нажать клавишу TAB. Пользователь также может щелкнуть любой элемент управления, кроме TextBox или ScrollBar, чтобы отобразить его TabIndex. Пользователь может изменить tabIndex элемента управления, указав новое значение индекса в поле TextBox и щелкнув CommandButton3. Изменение свойства TabIndex одного элемента управления также обновляет свойство TabIndex других элементов управления в элементе Frame.
Чтобы использовать этот пример, скопируйте пример кода в редактор скриптов формы. Чтобы запустить код, необходимо открыть форму, чтобы активировать событие Open . Убедитесь, что эта форма содержит:
Метка с именем Label1.
текстовое поле TextBox с именем TextBox1;
элемент Frame с именем Frame1;
текстовое поле TextBox в элементе Frame с именем TextBox2;
Два элемента управления CommandButton в кадре с именами CommandButton1 и CommandButton2.
полосу прокрутки ScrollBar в элементе Frame с именем ScrollBar1;
кнопку CommandButton (не в элементе Frame) с именем CommandButton3.
Sub MoveToFront()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
Temp = Frame1.ActiveControl.TabIndex
For i = 0 To Temp - 1
Frame1.Controls.Item(i).TabIndex = i + 1
Next
Frame1.ActiveControl.TabIndex = 0
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Sub CommandButton3_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
If IsNumeric(TextBox1.Text) Then
Temp = CInt(TextBox1.Text)
If Temp >= Frame1.Controls.Count Or Temp < 0 Then
'Entry out of range; move control to front of tab order
MoveToFront
ElseIf Temp > Frame1.ActiveControl.TabIndex Then
'Move entry down the list
For i = Frame1.ActiveControl.TabIndex + 1 To Temp
Frame1.Controls.Item(i).TabIndex = i - 1
Next
Frame1.ActiveControl.TabIndex = Temp
TextBox1.Text = Frame1.ActiveControl.TabIndex
Else
'Move Entry up the list
For i = Frame1.ActiveControl.TabIndex - 1 To Temp
Frame1.Controls.Item(i).TabIndex = i + 1
Next
Frame1.ActiveControl.TabIndex = Temp
TextBox1.Text = Frame1.ActiveControl.TabIndex
End If
Else
'Text entry; move control to front of tab order
MoveToFront
End If
End Sub
Sub Item_Open()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
Set Label1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Label1")
Set CommandButton3 = Item.GetInspector.ModifiedFormPages("P.2").Controls("CommandButton3")
Label1.Caption = "TabIndex"
Frame1.Controls(0).SetFocus
TextBox1.Text = Frame1.ActiveControl.TabIndex
Frame1.Cycle = 2 '2=fmCycleCurrentForm
CommandButton3.Caption = "Set TabIndex"
CommandButton3.TakeFocusOnClick = False
End Sub
Sub CommandButton1_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Sub CommandButton2_Click()
Set Frame1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("Frame1")
Set TextBox1 = Item.GetInspector.ModifiedFormPages("P.2").Controls("TextBox1")
TextBox1.Text = Frame1.ActiveControl.TabIndex
End Sub
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.