2012-03-27 57 views
2

我不得不修改VB6應用程序和我反覆打我的頭在牆上了控件數組。VB6如何獲取選中/檢查控制控件數組

我知道,對於數組中的事件處理程序包括它的索引值和我可以設置一些變量,但我應該能夠直接訪問選項按鈕的陣列選定的單選按鈕。目前我正在這樣做

For i = 0 To optView.Count - 1 
    If optView.Item(i).value = True Then 
     currIndex = i 
     Exit For 
    End If 
Next 

這真的是我唯一的選擇嗎?

回答

2

是的,這是我們唯一的選擇。控件數組對象不包含任何選擇邏輯(這是有道理的,因爲「選擇」可能對不同的控件有不同的意義)。我所做的唯一改變是用For Each替換For

0

另一種方式來做到這一點,我已經使用。編寫一個函數,然後調用該函數,傳入控件名稱,以返回索引號。然後,如果將其添加到模塊(.bas)中,則可以在將來重新使用它。

Function f_GetOptionFromControlArray(opts As Object) As Integer 

    ' From http://support.microsoft.com/KB/147673 
    ' This function can be called like this: 

    ' myVariable = f_GetOptionFromControlArray(optMyButtons) 'Control syntax OK 
    ' myVariable = f_GetOptionFromControlArray(optMyButtons()) 'Array syntax OK 

    On Error GoTo GetOptionFail 
    Dim opt As OptionButton 

    For Each opt In opts 
     If opt.Value Then 
      f_GetOptionFromControlArray = opt.Index 
      Exit Function 
     End If 
    Next 

    GetOptionFail: 
     f_GetOptionFromControlArray = -1 

End Function