Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Деактивация элементов списка значений (число прочтений - 7660 )
libov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 04. Июня 2010
Деактивация элементов списка значений
20. Октября 2011 :: 06:00
Печать  
При выборе значения из "Списка значений" с заданным 5-м параметром СпособВыбора=1, форма выбора отображается в виде меню.
Штатные функции объекта СпискаЗначений позволяют только добавлять/удалять (перед вызовом функции выбора) элементы списка или делать множественный выбор с помощью пометок.
Можно ли (с помощью FormEX?) перед вызовом хх.ВыбратьЗначение(,,,,1)  включать/выключать доступность отдельных пунктов меню (элементов списка), т.е. чтобы как в стандартном меню неактивные элементы отображались инверсным цветом и были недоступны для выбора?
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деактивация элементов списка значений
Ответ #1 - 20. Октября 2011 :: 07:52
Печать  
Установить пометку на нужный элемент списка значений.
  

FormEx developer
Наверх
www  
IP записан
 
libov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 04. Июня 2010
Re: Деактивация элементов списка значений
Ответ #2 - 20. Октября 2011 :: 08:19
Печать  
АЛьФ писал(а) 20. Октября 2011 :: 07:52:
Установить пометку на нужный элемент списка значений.


Или не понял или не работает.
Есть список значений из 9 элементов. Вызывается для выбора при нажатии на кнопку "+". Нужно (не удаляя/добавляя - чтобы не менялось количество элементов в списке) перед каждым нажатием на кнопку делать некоторые элементы неактивными.
Фрагмент кода:
Процедура ПриНажатииКнопкиПлюс()
     Перем i, n;
                 
     глСписокУслуг.Пометка(3,1);
     глСписокУслуг.Пометка(8,1);
     
     
     Если (глСписокУслуг.ВыбратьЗначение(,,i,,1)=1) Тогда


Т.е. в соответствии с подсказкой установил пометки на 3-й и 8-й элементы списка и вызвал процедуру ВыбратьЗначение(,,i,,1).
Но, установка пометок никак не изменила функциональность формы выбора (в виде меню) - как были все элементы доступны так и остались.

Pic01.bmp

Я что-то неверно понял или неточно сформулировал вопрос?



  

Pic01.bmp ( 95 KB | Загрузки )
Pic01.bmp
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Деактивация элементов списка значений
Ответ #3 - 20. Октября 2011 :: 13:25
Печать  
Не знаю на счет формекса, но можешь использовать активикс от мелкомягких - там точно можно.
Или меню от chessman-а на дюнаврап
  
Наверх
 
IP записан
 
Satans Claws
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 721
Зарегистрирован: 29. Ноября 2010
Re: Деактивация элементов списка значений
Ответ #4 - 21. Октября 2011 :: 02:42
Печать  
Ну и есть еще старая-добрая библиотека NetaMenu.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деактивация элементов списка значений
Ответ #5 - 21. Октября 2011 :: 07:56
Печать  
Хм... Я подразумевал использование метода FormEx:
Объект "Сервис"
Цитата:
ВыбратьЗначение(<?>,,,,,)
ChooseValue(<?>,,,,,)
Синтаксис:
ВыбратьЗначение(СписокЗначений, Значение, Заголовок, СпособВыбора, Флаг, Картинка,ПараметрыЦвета)
Назначение:
Метод предназначен для интерактивного выбора значения из многоуровневого списка. Многоуровневость обеспечивается вложенностью списков значений (см. Пример). Количество уровней не ограничено. Если выбор производится в меню, то значения с представлением ''-'' воспринимаются как разделители.
Параметры:
Установка пиктограмм в списке значений
Добавляем в начале представления ''[icon:N]'', где N - порядковый номер пиктограммы в картинке. Если пиктограмма отображается, то строка ''[icon:N]'' от представления отрезается при выводе. В режиме выбора из меню (не пометка!) значения списка значений, на которых установлена пометка, считаются недоступными. При выборе из меню пункт списка значений с представлением ''|'' - переход на следующую колонку
- СписокЗначений - тип: СписокЗначений. Список значений, из которого необходимо произвести выбор;
- Значение - тип: Любой. Переменная, куда помещается результат выбора;
- Заголовок - тип: Строка. Заголовок диалогового окна выбора;
- СпособВыбора - тип: Число. Необязательный. Значение по умолчанию - 0. Способ выбора значения:
0 - выбор в виде многоуровневого меню;
1 - выбор в виде дерева.
- Флаг - тип: Число. Необязательный. Значение по умолчанию - 0.
Для выбора в дереве: 1 - разрешить выбор групп; 0 - запретить.
Для выбора в меню: 0 - простой выбор; 1 - пометка значений; 2 - простой выбор (без привязки к активному реквизиту); 3 - пометка значений (без привязки к активному реквизиту). Если указано значение из разряда без привязки к активному реквизиту, то меню показывается в текущей позиции курсора мыши.
- Картинка - объект ''Картинка'' с нужными пиктограммами, в формате как для ТЗ.
- ПараметрыЦвета - список значений с параметрами цвета: значение - число цвета, представление - имя параметра. Имя параметра может быть одним из следующих: ЦветФонаВыделения, ЦветШрифтаВыделения, ЦветРамкиВыделения, ЦветФона, ЦветШрифта
ЗАМЕЧАНИЕ:
Многоуровневость обеспечивается списками значений, вложенными в основной (см. пример).
Если выбор производится в меню, то значения с представлением - воспринимаются как
разделители.
ПРИМЕР:
Сервис = СоздатьОбъект(''Сервис'');
Список = СоздатьОбъект(''СписокЗначений'');
Список.ДобавитьЗначение(1,''[icon:1]Пункт 1'');
Список.ДобавитьЗначение(2,''[icon:2]Пункт 2'');
Список.ДобавитьЗначение(3,''[icon:3]Пункт 3'');
Список.ДобавитьЗначение(4,''[icon:4]Пункт 4'');
Список.ДобавитьЗначение(0,''-'');
// создаем вложенный список
СписокДоп = СоздатьОбъект(''СписокЗначений'');
СписокДоп.ДобавитьЗначение(551,''Пункт 51'');
СписокДоп.ДобавитьЗначение(552,''Пункт 52'');
СписокДоп.ДобавитьЗначение(553,''Пункт 53'');
СписокДоп.ДобавитьЗначение(554,''Пункт 54'');
// добавляем вложенный список
Список.ДобавитьЗначение(СписокДоп,''Пункт 5'');
Список.ДобавитьЗначение(6,''Пункт 6'');
Список.ДобавитьЗначение(7,''Пункт 7'');
Выб = '''';
Картинка = СоздатьОбъект(''Картинка'');
Картинка.Загрузить(''МояКартинка4Пиктограммы'');
ПараметрыЦвета = СоздатьОбъект(''СписокЗначений'');
ПараметрыЦвета.Установить(''ЦветФонаВыделения''255);
ПараметрыЦвета.Установить(''ЦветРамкиВыделения''0);
Если Сервис.ВыбратьЗначение(Список,Выб,''Тестовый выбор значения'',0,0,Картинка,ПараметрыЦвета) = 1 Тогда
       Сообщить(Выб);
КонецЕсли;
  

FormEx developer
Наверх
www  
IP записан
 
libov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 04. Июня 2010
Re: Деактивация элементов списка значений
Ответ #6 - 21. Октября 2011 :: 08:31
Печать  
АЛьФ писал(а) 21. Октября 2011 :: 07:56:
Хм... Я подразумевал использование метода FormEx:
Объект "Сервис"


Я пробовал и с Сервис:

Если Сервис.ВыбратьЗначение(Список,Выб,"Тестовый выбор значения",0,1,Картинка,ПараметрыЦвета) = 1 Тогда
       Сообщить(Выб);
КонецЕсли;

Т.е. полностью повторил приведенный Вами пример из Синтакс-Помощника, только добавив

     Список.Пометка(2,1);
     СписокДоп.Пометка(2,1);
     Список.Пометка(8,1);

но результат тот же - установка пометок приводит к тому, что они просто отображаются в виде галочек на меню (кроме случая "перекрытия" их иконками), никак не влияют на доступность (и соответственно инверсный цвет) помеченного пункта меню. А именно это мне и хотелось получить.
  
Наверх
 
IP записан
 
libov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 04. Июня 2010
Re: Деактивация элементов списка значений
Ответ #7 - 21. Октября 2011 :: 08:33
Печать  
Satans Claws писал(а) 21. Октября 2011 :: 02:42:
Ну и есть еще старая-добрая библиотека NetaMenu.


Поиском по форуму ссылок не нашел. Если можно - ссылочку где почитать и где скачать.
  
Наверх
 
IP записан
 
libov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 04. Июня 2010
Re: Деактивация элементов списка значений
Ответ #8 - 21. Октября 2011 :: 08:48
Печать  
Eprst писал(а) 20. Октября 2011 :: 13:25:
Не знаю на счет формекса, но можешь использовать активикс от мелкомягких - там точно можно.
Или меню от chessman-а на дюнаврап


Почитал на форуме ветку chessman-а по его меню. Может я ошибаюсь, но у меня сложилось впечатление, что для моей "примитивной" потребности, тянуть еще одну ВК - как "из пушки по воробьям".

Системное меню 1С позволяет строить многоуровневые меню, добавлять иконки, разделители и горячие клавиши, делать отдельные пункты неактивными (без удаления из меню).
FormEx-совский Сервис.ВыбратьЗначение расширил штатную СписокЗначений.ВыбратьЗначение практически до той же функциональности. Вот только управления деактивацией пунктов меню и не хватает.
И с вопросом я обратился, предполагая что эта возможность в FormEx есть, но я не разобрался как с ней работать. Но, похоже, ее нет.
  
Наверх
 
IP записан
 
chessman
God Member
*****
Отсутствует



Сообщений: 1084
Зарегистрирован: 10. Августа 2007
Re: Деактивация элементов списка значений
Ответ #9 - 21. Октября 2011 :: 09:15
Печать  
Только это не ВК, а COM Сервер, который позволяет много что делать, например контекстное меню.
Сравни объекм ~ 14 кб.
  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деактивация элементов списка значений
Ответ #10 - 21. Октября 2011 :: 10:56
Печать  
libov писал(а) 21. Октября 2011 :: 08:31:
Я пробовал и с Сервис:

Если Сервис.ВыбратьЗначение(Список,Выб,"Тестовый выбор значения",0,1,Картинка,ПараметрыЦвета) = 1 Тогда
       Сообщить(Выб);
КонецЕсли;

Т.е. полностью повторил приведенный Вами пример из Синтакс-Помощника, только добавив

     Список.Пометка(2,1);
     СписокДоп.Пометка(2,1);
     Список.Пометка(8,1);

но результат тот же - установка пометок приводит к тому, что они просто отображаются в виде галочек на меню (кроме случая "перекрытия" их иконками), никак не влияют на доступность (и соответственно инверсный цвет) помеченного пункта меню. А именно это мне и хотелось получить.


И правильно, что отображаются галки. Надо ж не пометку значений устанавливать, а выбор:

Цитата:
Если Сервис.ВыбратьЗначение(Список,Выб,"Тестовый выбор значения",0,0,Картинка,ПараметрыЦвета) = 1 Тогда
      Сообщить(Выб);
КонецЕсли;
  

FormEx developer
Наверх
www  
IP записан
 
libov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 04. Июня 2010
Re: Деактивация элементов списка значений
Ответ #11 - 21. Октября 2011 :: 11:39
Печать  
Понял - получилось. Спасибо!
Pic03.bmp
Осталось только подобрать цвета, но это не должно быть проблемой.
  

Pic03.bmp ( 108 KB | Загрузки )
Pic03.bmp
Наверх
 
IP записан
 
libov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 04. Июня 2010
Re: Деактивация элементов списка значений
Ответ #12 - 21. Октября 2011 :: 11:57
Печать  
Хотя оказалось не так уж просто. Не могу найти списка возможных значений представления списка ПараметрыЦвета.
В документации нашел:
ЦветФонаВыделения,
ЦветШрифтаВыделения,
ЦветРамкиВыделения,
ЦветФона, ЦветШрифта

А какое значение для управления цветом помеченного (или недоступного) элемента меню? Или цвет шрифта/фона для такого элемента зафиксирован как "серый на бежевом" и не может изменяться через тот же список ПараметрыЦвета?
Как-то сложно в это поверить... Подскажите, плс, где это можно почитать.
« Последняя редакция: 21. Октября 2011 :: 14:01 - libov »  
Наверх
 
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Деактивация элементов списка значений
Ответ #13 - 21. Октября 2011 :: 14:31
Печать  
Цвет фона и теста для недоступных пунктов жестко зашит. Как-то раньше не подумал об этом, а никого особо и не парило такое поведение Печаль
Если не забуду, то подправлю, чтобы был параметр для этого цвета и выложу завтра исправленный вариант в этой ветке.
  

FormEx developer
Наверх
www  
IP записан
 
libov
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 15
Зарегистрирован: 04. Июня 2010
Re: Деактивация элементов списка значений
Ответ #14 - 21. Октября 2011 :: 15:07
Печать  
АЛьФ писал(а) 21. Октября 2011 :: 14:31:
Цвет фона и теста для недоступных пунктов жестко зашит. Как-то раньше не подумал об этом, а никого особо и не парило такое поведение Печаль
Если не забуду, то подправлю, чтобы был параметр для этого цвета и выложу завтра исправленный вариант в этой ветке.


Несколько дней подождать - конечно не проблема.
Если получится выкроить время, то хотелось бы иметь такую возможность для "эстетической целостности", хотя для функциональности это не критично.
В любом случае - спасибо за помощь и внимание.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать