2

我正在使用 VB6 维护应用程序。它是一个基于 Windows 的应用程序。我的客户想在运行时配置控件选项卡索引。我将客户端设置保存到访问数据库。

以下子设置控件的选项卡索引

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

TSetting是在全局模块中定义的 TYPE Array。

Private Sub Form_Load()
  GetRATabSetting
  SetRATabSetting
End Sub

GetRATabSetting正在从数据库中提取值并填充到 TYPE 数组中。

代码执行得很好。甚至从数据库中提取值并正确设置为控件。但是该选项卡遵循设计时设置的索引。

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

4

1 回答 1

4

假设您在一个表单上有 5 个控件并且它们的 Tab 键顺序是这样的

Index - TabIndex
1 - 0
2 - 1
3 - 2
4 - 3
5 - 4

如果你把 3 改成 1 那么它看起来像这样

Index - TabIndex
1 - 0
2 - 2
3 - 1
4 - 3
5 - 4

Visual Basic 将自动增加一个等于或高于您分配的所有 tabindex。永远不会有两个控件具有相同的 tabindex 的时候。这会导致像您这样分配选项卡索引的例程出现问题。

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

于 2011-03-15T12:26:40.917 回答