2011-03-15 67 views
2

我正在使用VB6維護應用程序。這是一個基於Windows的應用程序。我的客戶希望在運行時配置控件選項卡索引。我將客戶端設置保存到訪問數據庫。如何在運行時在VB6中分配TabIndex

以下子設置控制

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是在全局模塊中定義的類型的數組的標籤索引。

Private Sub Form_Load() 
    GetRATabSetting 
    SetRATabSetting 
End Sub 

GetRATabSetting正在從數據庫中提取值並填充到TYPE arrray中。

代碼執行得相當好。即使是從數據庫中提取值並正確設置爲控件。但是該選項卡遵循設計時設置的索引。

我在做任何錯誤嗎?是否可以在運行時設置控件的tabindex?有沒有其他方式來執行此操作?

回答

4

假設你有一個表格上5個控件及其標籤順序是這樣的

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 0(或最低)開始。

+0

是的,爲我工作。謝謝@RS康利。 – Nirmal 2011-03-15 14:06:06