Можно ли удалить фокус из элемента управления, чтобы изменить его свойства в VBA? - PullRequest
2 голосов
/ 04 ноября 2010

Сначала я удаляю видимость элемента управления, выполняя это:

For Each ctl In Me.MySubform.Controls
    ctl.Visible = False
Next ctl

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

For i = 0 To UBound(MyArray) Step 2
    Me.MySubform.Controls(i).ControlSource = MyArray(i)
    Me.MySubform.Controls(i + 1).Caption = MyArray(i + 1)
    Me.MySubform.Controls(i).Visible = True
    Me.MySubform.Controls(i + 1).Visible = True
Next i

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

Я думаю, что, сняв фокус элементов управления, я смог бы достичь этого;однако у меня есть две проблемы.

  1. Возможно ли это в VBA (MS Access 2003)?Если да, то как?
  2. Есть ли лучший, более идеальный способ сделать это в этой среде?Если да, какие варианты доступны и какие соображения используются при выборе решения?

Спасибо,

1 Ответ

5 голосов
/ 04 ноября 2010

Вы не можете изменить свойство visible элемента управления, имеющего фокус. Это проблема? Если это так, может быть полезно сохранить небольшой элемент управления для получения фокуса с помощью SetFocus: http://msdn.microsoft.com/en-us/library/aa205181(office.10).aspx

...