VB6, как получить выбранный / проверенный элемент управления в массиве элементов управления - PullRequest
3 голосов
/ 27 марта 2012

Я должен изменить приложение VB6 и постоянно бью головой об стену над массивами управления.

Я знаю, что обработчик событий для массива включает его индексное значение, и я могу установить некоторую переменную там, но я должен иметь возможность прямого доступа к выбранному переключателю в массиве OptionButton. В настоящее время я делаю это

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

Это действительно мой единственный вариант?

Ответы [ 2 ]

3 голосов
/ 27 марта 2012

Да, это наш единственный вариант.Объект массива элементов управления не содержит никакой логики выбора (что имеет смысл, поскольку «выбранный» может означать разные вещи для разных элементов управления).Единственное изменение, которое я бы сделал, - это замена For на For Each.

0 голосов
/ 18 августа 2015

Другой способ сделать это, который я использовал. Напишите функцию, а затем вызовите функцию, передавая имя элемента управления, чтобы вернуть номер индекса. Затем вы можете использовать это в будущем, особенно если добавите его в модуль (.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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...