首页 文章

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

提问于
浏览
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数组 .

Private Sub Form_Load()
  GetRATabSetting
  SetRATabSetting
End Sub

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

代码执行得非常好 . 甚至从数据库中提取值并正确设置为控件 . 但是选项卡跟随索引在设计时设置的内容 .

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

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的时间 . 这会导致分配像您这样的选项卡索引的例程出现问题 .

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

相关问题