Страницы: 1
RSS
Не работает процедура обработки события Click на элементе списка ListBox, При установлении единичного выбора - все в порядке, при установлении множественного выбора - не работает
 
Помогите, пожалуйста, с такой проблемой - не запускается процедура обработки события Click на элементе списка ListBox.
В попытках найти причину,  код упростила до тривиальности - при клике на элементе списка на экран выводится сообщение "Вы сделали выбор". При установлении единичного выбора - все работает, а когда меняю на множественный - выбранный элемент списка выделяется цветом, но сообщение на экран не выводится, т.е. процедура обработки этого события не запускается. В чем может быть причина?
 
выложите ваш пример. случиться может очень многое
может быть обрабатывать надо не клик.. а может..
Живи и дай жить..
 
Где ListBox - на форме, на листе? Где файл-пример?
 
Извините, если невнятно описываю - новичок еще.

Задача была такая:
Заполнение БД с помощью формы. В форме есть список ComboBox с перечнем производителей. Есть так же список ListBox со списком товаров, соответствующим каждому производителю. Список ListBox формируется в момент выбора пользователем производителя из списка ComboBox. Все данные для формирования списка находятся в таблице Эксель. Из этого списка пользователь может выбрать некоторые элементы, которые затем вносятся в БД.
Предполагалась следующая реализация выбора элементов из списка ListBox - проверка, был ли элемент выбран и формирование динамического массива из выбранных элементов. За одну сессию пользователь мог выбирать по очереди несколько производителей и у каждого - несколько товаров. Затем по нажатию кнопки данные из итогового массива должны быть записаны в БД.

Так вот, при установке единичного выбора в ListBox, массив формируется из одного элемента и заносится в БД, а при множественном выборе эта процедура не запускается.
Изменено: oksana2016 - 28.06.2016 15:05:06
 
1. Код следует оформлять соответствующим тегом. Ищите такую кнопку и исправьте своё сообщение.
2. Вас просили сам файл, а не процедуру из него.
Если файл велик - создайте небольшой файл-аналог.
 
попробуйте обрабатывать маусдаун
Живи и дай жить..
 
Цитата
Юрий М написал:
Если файл велик - создайте небольшой файл-аналог.
В предыдущее сообщение вложила файл.  
 
1 зачем переменная countIngrArray ? массив сам знает свой размер
2 зачем пошаговое добавление итемов? можно сразу из массива в лист
3 я уже советовал - обрабатывайте не клик, а маусдаун( а еще правильнее keydown и нажатие интер, как окончание выбора)
Живи и дай жить..
 
Сделал мультивыбор в ЛистБоксе. См. код кнопки "Добавить". Для примера показал вывод в MsgBox.
 
Цитата
Слэн написал:
1 зачем переменная countIngrArray ? массив сам знает свой размер
2 зачем пошаговое добавление итемов? можно сразу из массива в лист
3 я уже советовал - обрабатывайте не клик, а маусдаун( а еще правильнее keydown и нажатие интер, как окончание выбора)
Я новичок, это мои первые шаги. Не исключаю, что что-то я делаю неоптимально или вообще тупо.
Спасибо за замечания и совет. Обязательно попробую.
 
Цитата
Юрий М написал:
Сделал мультивыбор в ЛистБоксе. См. код кнопки "Добавить". Для примера показал вывод в MsgBox.
Это не совсем так. Пользователь при наборе сырья в рецептуру может выбирать разных производителей - т.е. выбрал одного (+его продукцию), потом другого (+его продукцию), потом нажимает кнопку Добавить и эта сборная информация должна попасть в БД. В вашем случае при смене производителя ранее сделанный выбор не сохраняется. Ну и надо, чтобы в БД записывалось, а оно не записывается.
 
Считаю, что нет смысла отлавливать КАЖДЫЙ клик. Зачем? Цикл по всем выбранным и делаем, что нужно по отобранным. А если обрабатывать каждый клик, то потребуется дополнительный контроль: допустим, Вы выбрали значение в строках 2, 4, 5. А потом передумали, и в строке 2 отменили выбор. Понятно, о чём я? ))
 
Цитата
Юрий М написал:
Понятно, о чём я? ))
Да, понятно. Спасибо. Я об этом как-то не подумала )). Попробую переделать.
 
Набросок можно посмотреть в моём файле.
Цитата
oksana2016 написал:
надо, чтобы в БД записывалось, а оно не записывается.
Так я и не делал запись - только показал, как перебрать выбранные позиции )) А уж с ними можно делать что угодно. Можно даже в базу (не побоюсь этого слова )  ;)
 
Цитата
oksana2016 написал:
Понятно, о чём я? ))
Хотя с другой стороны не понятно, почему при смене на мультивыбор процедура обработки клика не вызывается. В чем-таки причина?
 
Цитата
oksana2016 написал:
не понятно, почему при смене на мультивыбор процедура обработки клика не вызывается
Я не знаю ))
Можно заменить её на lboxIngr_Change. Или, как советовал Слэн, но событие мышки.
 
Цитата
Юрий М написал:
Так я и не делал запись - только показал, как перебрать выбранные позиции )) А уж с ними можно делать что угодно. Можно даже в базу (не побоюсь этого слова )
А добавьте, пожалуйста, в БД, если не сложно. Я новичок еще, трудновато дается самообразование ))
Страницы: 1
Читают тему
Наверх