Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Навигация в ListBox со связным выбором / 3 сообщений из 3, страница 1 из 1
11.10.2016, 22:58
    #39324900
JohnSparrow
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Навигация в ListBox со связным выбором
Доброго времени суток.

Значит, ситуация следующая. Для работы с записями использую ListBox'ы (тип источника строк - список значений с ручной загрузкой соотв. данных). Для удобства экспорта в Excel решил соотв. ListBox'ы сделать со связным выбором - чтобы из данного конкретного ListBox'а экспортировать только нужные записи. И вот тут возникла проблема с навигацией.

Для редактирования/удаления записи, отображения ее дочерних записей нужно, чтобы в ListBox'е была выделена только одна строка. Это проверяется просто:
Код: vbnet
1.
2.
3.
    If List.ItemsSelected.count <> 1 Then
        Exit Sub
    End If



Далее. Если элемент списка выделен щелчком мыши, то для его определения вполне работоспособен следующий код:
Код: vbnet
1.
2.
    Dim xxx As Long
    xxx = List.ItemsSelected.Item(0)



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

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

В качестве примера прилагаю небольшую БД с одной формой с описанными выше функциями.

Не подскажете, как побороть проблему? Буду крайне благодарен.
...
Рейтинг: 0 / 0
12.10.2016, 16:35
    #39325476
Навигация в ListBox со связным выбором
JohnSparrowДля удобства экспорта в Excel решил соотв. ListBox'ы сделать со связным выбором - чтобы из данного конкретного ListBox'а экспортировать только нужные записи. Мне не понятна ваша логика. ListBox с множественным выбором, а обработка выполняется только, если выделена одна строка. Действительно List.ItemsSelected.Item(0) вернет вам 1-й элемент в коллекции выделенных строк, но это ли вам нужно?
В ListBox-е с множественным выбором обычно в цикле по коллекции ItemsSelected (чаще это For Each obj In ItemsSelected) получают и обрабатывают значения выделенных строк.

ЗЫ. А что, собственно, вы собираетесь экспортировать в Excel?
...
Рейтинг: 0 / 0
12.10.2016, 16:51
    #39325499
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Навигация в ListBox со связным выбором
JohnSparrow,
Код: vbnet
1.
2.
3.
For Each i In Me.list4.ItemsSelected
    myData = myData & "," & Me.list4.ItemData(i)
Next
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Навигация в ListBox со связным выбором / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]