Я создаю форму, которая позволяет пользователю выбирать любое количество сигнат, чтобы я мог автоматически заполнить набор записей значениями.Я воссоздал группу опций флажков, потому что менеджеры / супервизоры сказали, что флажки по умолчанию слишком малы.
У меня есть этот код, который работает, но я хочу знать, есть ли способ создать более общую функцию, которую я мог бы использовать для каждого события OnClick вместовставлять один и тот же код с небольшими изменениями 36 раз.
Private Sub lblChkSig1_Click()
mblnArray(0) = Not (mblnArray(0))
If mblnArray(0) Then
lblChkSig1.Caption = Chr(80) 'check mark
lblChkSig1.BackColor = RGB(0, 128, 0) 'Dark Green
Else
lblChkSig1.Caption = ""
lblChkSig1.BackColor = RGB(255, 255, 255) 'White
End If
End Sub
Массив mblnArray
- это просто массив из 36 логических значений, которые я использую, чтобы я мог быстро перебирать их все.Я делал это раньше, но только с четырьмя значениями, где повторение всего кода не было проблемой.Теперь, когда у меня есть более широкий набор опций, я решил изменить его, чтобы сделать его многоразовым.
Я придумал эту функцию в качестве замены, но я не могу понять, как динамически изменить, какая метка обновляется.
Private Sub UpdateChecks(iPos As Integer)
Dim ctlCurrentControl as Label
Set cltCurrentControl = Me.ActiveControl
mblnArray(iPos) = Not (mblnArray(iPos))
If mblnArray(iPos) Then
ctlCurrentControl.Caption = Chr(80) 'check mark
ctlCurrentControl.BackColor = RGB(0, 128, 0) 'Green
Else
ctlCurrentControl.Caption = ""
ctlCurrentControl.BackColor = RGB(255, 255, 255) 'White
End If
End Sub
Я выяснил, когда искал решения, которые помечают метки.не может быть активным контролем формы.Я также попытался
Dim ctlCurrentControl as Label
Set ctlCurrentControl = "lblChkSig" & iPos
, но это тоже не сработало.Я не знаю, куда идти дальше.Я не уверен, что это даже можно сделать, но было бы очень полезно, если бы было решение.