Поделиться через


Установка порядка табуляции элементов управления в кадре

В этом примере используется свойство 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 и обратная связь.