Понедельник, 04 Декабря 2017 г. 21:38
+ в цитатник
Добрый день,
Суть проблемы такова.
В форме есть свободный Listbox с множественным простым выбором значений из списка.
В случае, если вход и выбор нужных значений в списке осуществляется мышью, то всё работает как положено (выбор нужных значений -> выход из контрола -> AfterUpdate, когда происходит обработка выбранных значений и т.д.)
Если же начать перемещаться по контролам в форме при помощи клавиши 'Tab', то при переходе на этот Listbox происходит вход, список получает фокус и нажатием пробела можно выбрать первый элемент списка, но, если выбран только один этот первый элемент и перемещений по элементам списка (стрелки вверх/вниз) не происходило, то после ещё одного нажатия 'Tab' произойдут выход с потерей фокуса, но событий BeforeUpdate и AfterUpdate не случиться, а ListIndex остаётся равен "-1".
В случае перемещений по списку курсорными клавишами и(или) при выборе более одного значения из списка все события отрабатывают как надо.
Сталкивался с ситуацией, когда при программном выборе значений в свободном Listbox'е выделение происходило, но ListIndex оставался равным "-1". Эту проблему решил при помощи Selected(i)=true -> currCtl.SetFocus -> ListIndex = [n]+1 (по сути имитация ручного ввода).
В этом случае никакие шаманства с SetFocus пока успеха не принесли :(
http://www.sql.ru/forum/1279080/problema-s-listbox
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-