我正在使用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?还有其他方法可以执行此操作吗?
答案 0 :(得分: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,而是构建与选项卡索引关联的控制索引数组。根据tabindex对其进行排序,然后从tabindex 0(或最低)的任何位置开始分配。