Проблема с ItemsSelected в списке
КД
Дата: 08.03.2008 17:32:43
Нужно выполнить некоторые действия, если в списке есть выделенная строчка. Я полагал, что если щелкнуть на строке списка, то Me.Список.ItemsSelected.Count вернет "1". А возвращает "0"! Ладно, пробуем усложненный вариант:
Dim frm As Form
Dim ctl As Control
Dim varIndex As Variant
On Error GoTo ErrorHandler
Set frm = Forms!Форма
Set ctl = frm!Список
For Each varIndex In ctl.ItemsSelected
Me.Кнопка.Enabled = False
Next
Но кнопка не становится неактивной, если этот код повесить на Список_Click, а если повесить на Список_MouseDown, то становится, но только после второго вызова этого кода. В чем тут дело?
_restavraciya
Дата: 08.03.2008 18:08:59
У миня на афтеапдэйт возвращает каунт > 0
КД
Дата: 11.03.2008 00:51:58
2 _restavraciya
Да повесить можно много на чего и заставить отработать. Почему на Click-е не работает? - вот в чем вопрос.
Соврал, на втором проходе по Click тоже отрабатывает. В принципе, можно повесить на DblClick, но почему такое извращение? И у Гетца написана конструкция с использованием Click...
mds_world
Дата: 11.03.2008 01:45:23
КД,
видимо у списка свойство "Несвязное выделение" отсутствует. В этом случае ItemsSelected.Count возвращает 0. Проверить выделено ли что-нибудь из списка (при отсутствии несвязного выделения) проще всего функцией isnull(список). Или в цикле проверять Me.список.Selected(i)
КД
Дата: 11.03.2008 19:10:02
Понятно, спасибо! А почему после II-го прохода код все-таки срабатывает? Ведь свойства самого списка я при этом не меняю...
_restavraciya
Дата: 11.03.2008 19:17:32
2 КД
Потому что между первым и вторым CLICK есть один UFTERAPDATE ;-)
Не знаю что там у Гетца, но обновление (выбор/изменение значения) списка происходит в событии AfterUpdate
mds_world
Дата: 11.03.2008 19:26:42
_restavraciya |
2 КД Потому что между первым и вторым CLICK есть один UFTERAPDATE ;-) |
_restavraciya,
CLICK идет самым последним в цепи событий. UFTERAPDATE до него. И это правильно, иначе на этом событии поле еще не получило бы значения.
_restavraciya
Дата: 11.03.2008 19:33:20
Да, прогнал :-/
КД
Дата: 12.03.2008 01:00:20
Спасибо, буду пробовать.
КД
Дата: 12.03.2008 18:16:00
2 _restavraciya
Замена Click на AfterUpdate не помогла, а помогло:
2 mds_world
Да, лучше всего – проверка IsNull. Спасибо большое!