Как получить элемент управления с фокусом в подчиненной форме? - PullRequest
0 голосов
/ 17 июня 2019

MS-Access VBA вызывает ошибку, когда me.myControl имеет фокус, и я пытаюсь установить

me.myControl.visible=false 

Поэтому я использую Screen.ActiveControl, чтобы выяснить, имеет ли фокус myControl:

if me.myControl.name = Screen.ActiveControl.name then
    me.otherControl.SetFocus
end if
me.myControl.visible=false 

К сожалению, похоже, что каждая подчиненная форма может иметь свой собственный "ActiveControl". Я не нашел способ выяснить, какой это. Поэтому я должен сделать этот обходной путь:

on error goto setMyfocus
me.subform.Form!myCtrlInSubform.visible = false
exit function

setMyfocus:
me.subform.Form!otherCtrlInSubform.SetFocus
me.subform.Form!myCtrlInSubform.visible = false
exit function

Очевидно, что это не хорошее решение. Так есть ли способ выяснить, какой элемент управления в подчиненной форме имеет фокус, не вызывая ошибки?

1 Ответ

0 голосов
/ 17 июня 2019

Попробуйте это:

' It's my main form:
If Screen.ActiveForm.Name = "YourFormName" Then
  ' And it's my subform:
  If Forms!YourFormName.ActiveControl.Name = "subform" Then
    ' And it's my control in subform:
    If Screen.ActiveControl.Name = "myCtrlInSubform" Then
      Me.subform.Form!otherCtrlInSubform.SetFocus
      Me.subform.Form!myCtrlInSubform.Visible = False
    End If
  End If
End If
...