2012-03-27 8 views
2

Ich muss eine VB6-App ändern und wiederhole meinen Kopf gegen eine Wand über Kontroll-Arrays.VB6 Wie bekomme ich das ausgewählte/kontrollierte Steuerelement in einem Steuerelement-Array?

Ich weiß, dass der Event-Handler für das Array seinen Indexwert enthält, und ich kann eine Variable dort festlegen, aber ich sollte in der Lage sein, direkt auf das ausgewählte Optionsfeld in einem Array OptionButton zuzugreifen. Derzeit mache ich das

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

Ist das wirklich meine einzige Option?

Antwort

2

Ja, das ist unsere einzige Option. Das Steuerelement-Array-Objekt enthält keine Auswahllogik (was sinnvoll ist, da "ausgewählt" verschiedene Dinge für verschiedene Steuerelemente bedeuten kann). Die einzige Änderung, die ich machen würde, ist das Ersetzen der For durch For Each.

0

Eine andere Möglichkeit, dies zu tun, die ich verwendet habe. Schreiben Sie eine Funktion, und rufen Sie dann die Funktion auf, die den Steuerelementnamen übergibt, um die Indexnummer zurückzugeben. Dann können Sie dies in Zukunft besonders dann wiederverwenden, wenn Sie es einem Modul (.bas) hinzufügen.

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 
Verwandte Themen