Formex 2.0.5.140 от 17.01.19
Новое: Сервис.ВыбратьЗначение
ВыбратьЗначение(СписокЗначений, Значение, Заголовок, СпособВыбора, Флаг, Картинка,ПараметрыЦвета)
- в описании и использовании ничего не изменилось.
Добавлена вариативность отображения списка значений.
При выборе значения в виде меню параметр "Заголовок" отображается как заголовок списка
Если параметр опущен, или передана пустая строка (! пробелы трактуются как "непусто"), или передано пустое значение - заголовок не выводится и не отображается.
Фича/полезность (подсказано Альф'ом): если в параметре "Картинка" передать код шрифта (из соотв.метода СоздатьШрифт) - то список значений будет отрисован соотв.шрифтом (см.картинку выше), работает только для способа выбора "меню".
Примечание: Что такое
"Для выбора в меню: 0 - простой выбор; 1 - пометка значений; 2 - простой выбор (без привязки к активному
реквизиту); 3 - пометка значений (без привязки к активному реквизиту)." - понять/применить не удалось. Получается просто отображение пометок (крыжиками) если для соотв.позиции списка значений было применено штатное СЗ.Пометка(позиция,1);
Штатный выбор из СЗ и выбор используя Formex не позволяют как-то спозциционироваться на нужную "текущую" строку списка (например, при открытии списка из 10 позиций на выбор, хотим чтобы текущей строкой была 5-ая).
Здесь сможно применить такой финт как эмулировать нажатия клавиши курсор вниз нужное количество раз, например:
ПоказыватьЗаголовокСписка=1; //1 - показывать, 0 - не показывать
СписокПринтеров = глСервис.ПолучитьСписокПринтеров();
Команда = СписокПринтеров.НайтиЗначение(СокрЛП(ЕГАИС_АРМ_ПринтерА4)); //позиция в списке
Команда = Макс(1,Команда)+ПоказыватьЗаголовокСписка; //учтем есть ли значение в списке и наличие заголовка
Команда = "{DOWN "+Команда+"}";глСервис.ЭмулироватьКлавиатуру(Команда); //сколько раз жмакнуть курсор вниз, или на 1 строку если в списке нет
ВыбЗнач = "";
Если глСервис.ВыбратьЗначение
(СписокПринтеров,ВыбЗнач,?(ПоказыватьЗаголовокСписка<>0,"ВЫБЕРИ ПРИНТЕР А4",""),0,0,КодШрифт)
<>1 Тогда Возврат; КонецЕсли;
ЕГАИС_АРМ_ПринтерА4 = ВыбЗнач;