如何在VB6中的运行时分配TabIndex

如何在VB6中的运行时分配TabIndex,vb6,tabindex,Vb6,Tabindex,我在VB6维护应用程序中工作。它是一个基于windows的应用程序。我的客户端希望在运行时配置控件选项卡索引。我正在将客户端设置保存到access数据库中 以下子集合控件的选项卡索引 Private Sub SetTabSetting() Dim i As Integer Dim Ctr As Control If UBound(TSetting) > 0 Then For i = 0 To UBound(TSetting) For Each Ctr In Me.C

我在VB6维护应用程序中工作。它是一个基于windows的应用程序。我的客户端希望在运行时配置控件选项卡索引。我正在将客户端设置保存到access数据库中

以下子集合控件的选项卡索引

Private Sub SetTabSetting()
Dim i As Integer
Dim Ctr As Control
If UBound(TSetting) > 0 Then
    For i = 0 To UBound(TSetting)
        For Each Ctr In Me.Controls
            Dim matched As Boolean: matched = False

            If Ctr.Name = TSetting(i).ControlName Then
               Ctr.TabIndex = TSetting(i).TabIndexNum
               Exit For
            End If
        Next
    Next
End If
End Sub
t设置
是在全局模块中定义的类型数组

Private Sub Form_Load()
  GetRATabSetting
  SetRATabSetting
End Sub
GetRATabSetting
从数据库中提取值并填充到arrray类型中

代码执行得非常好。甚至可以从数据库中提取值并正确设置控件。但该选项卡是在designtime中设置的索引之后


我做错什么了吗?是否可以在运行时设置控件的tabindex?是否有其他方法执行此操作?

假设表单上有5个控件,它们的选项卡顺序如下

Index - TabIndex
1 - 0
2 - 1
3 - 2
4 - 3
5 - 4
Index - TabIndex
1 - 0
2 - 2
3 - 1
4 - 3
5 - 4
如果你把3改成1,它会是这样的

Index - TabIndex
1 - 0
2 - 1
3 - 2
4 - 3
5 - 4
Index - TabIndex
1 - 0
2 - 2
3 - 1
4 - 3
5 - 4
Visual Basic将自动增加一个等于或高于您指定的所有选项卡索引。永远不会有两个控件具有相同的tabindex的时候。这会给像您这样分配选项卡索引的例程带来问题


您应该做的不是直接从数据库分配tabindex,而是构建一个与tab索引关联的控制索引数组。根据tabindex对其进行排序,然后开始分配,从tabindex 0(或最低)的任何位置开始分配。

是的,对我有用。谢谢@RS康利。