Имя: Пароль:
1C
1C 7.7
v7: СписокЗначений с иконками.
0 varelchik
 
11.10.12
14:39
Народ натолкните на мысль как сделать свой собственный Список на подобии обычного контекстного меню для работы с ТП.
Чет заклинило никак неможу придумать.
Может у кого есть наработки?
1 ADirks
 
11.10.12
14:42
http://www.rikcenter.ru/download/NetaMenu.rar
+ небольшой класс  ТМеню


Перем нМеню;
Перем нГруппа;

Перем КолвоКартинок;
//_____________________________________________________________________________
Функция Сам(Конт) Возврат Конт; КонецФункции //:Контекст

///******************************** ADirks 03.08.2006
Процедура Новое() Экспорт
   нМеню = 0;
   КолвоКартинок = 0;
   Сам(Контекст).ПолучитьБазовыйКласс().Новое();
КонецПроцедуры
///******************************** ADirks 03.08.2006

///******************************** Павел  07.12.2010
//    ИдентификаторПуть - идентификатор картинки или непосредственный путь к ней
//    ТипИдПути:
//        0 - первый параметр это Идентификатор картинки
//        1 - первый параметр - это путь к картинке
Функция ДобавитьКартинку(ИдентификаторПуть, ТипИдПути = 0) Экспорт
   Если ТипИдПути = 0 Тогда
       Путь = глСписокКартинокПанели.Получить(ИдентификаторПуть);
   Иначе
       Путь = ИдентификаторПуть;
   КонецЕсли;
   
   Если ФС.СуществуетФайл(Путь) = 0 Тогда
       //#error Неверно задан путь к файлу!
   КонецЕсли;
   
   КолвоКартинок = КолвоКартинок + 1;
   Сам(Контекст).ПолучитьБазовыйКласс().ДобавитьКартинку(Путь, 1);
   
   Возврат КолвоКартинок;
КонецФункции    // ДобавитьКартинку
///******************************** Павел  07.12.2010

///******************************** ADirks 03.08.2006
Процедура ДобавитьСтроку(стрДопДанные, Заголовок = "", НомерКартинки = 0) Экспорт
   Перем Меню;
   
   Если Заголовок = "" Тогда
       стрЗаголовок    = стрДопДанные;
   Иначе
       стрЗаголовок    = Заголовок;
   КонецЕсли;
   
   Меню = Сам(Контекст).ПолучитьБазовыйКласс();
   Если ТипЗначения(нГруппа) = 0 Тогда
       Меню.ДобавитьСтроку(стрЗаголовок,,,, стрДопДанные);
       нМеню = нМеню + 1;
   Иначе
       Меню.ДобавитьСтроку(стрЗаголовок, нГруппа,,, стрДопДанные);
   КонецЕсли;
   
   Если НомерКартинки > 0 Тогда
       Меню.ИспользоватьКартинку("", НомерКартинки - 1);
   КонецЕсли;
КонецПроцедуры
///******************************** ADirks 03.08.2006

///******************************** ADirks 03.08.2006
Процедура ДобавитьРазделитель() Экспорт
   ДобавитьСтроку("-", "");
КонецПроцедуры
///******************************** ADirks 03.08.2006

///******************************** Павел  08.12.2010
Процедура СделатьНедоступным(Путь = "") Экспорт
   Сам(Контекст).ПолучитьБазовыйКласс().СделатьНеДоступным(Путь);
КонецПроцедуры    // СделатьНедоступным
///******************************** Павел  08.12.2010

///******************************** ADirks 03.08.2006
Процедура НачатьГруппу(стрЗаголовок) Экспорт
   Меню = Сам(Контекст).ПолучитьБазовыйКласс();
   Меню.ДобавитьСтроку(стрЗаголовок);
   нГруппа = нМеню;
КонецПроцедуры
///******************************** ADirks 03.08.2006

///******************************** ADirks 03.08.2006
Процедура ЗавершитьГруппу() Экспорт
   нГруппа = ПолучитьПустоеЗначение();
   нМеню = нМеню + 1;
КонецПроцедуры
///******************************** ADirks 03.08.2006

///******************************** ADirks 03.08.2006
// Предполагается что доп. данные имеют формат 'ID:<ИдентификаторТипаДействия>:<ИдентификаторОбъекта>'
Функция Показать(стрЗаголовокКнопки, фМодальныйРежим) Экспорт
   Перем стрДопДанные;
   
   Меню = Сам(Контекст).ПолучитьБазовыйКласс();
   
   стрДопДанные  = стрЗаголовокКнопки;
   фИскатьКнопку = ?(стрЗаголовокКнопки = "", 0, 1);
   стрДействие   = Меню.ОткрытьМеню(стрДопДанные, фМодальныйРежим, 0, фИскатьКнопку);
   Если ПустаяСтрока(стрДопДанные) = 0 Тогда
       Возврат стрДопДанные;
   Иначе
       Возврат СтрЗаменить(стрДействие, "&", "");
   КонецЕсли;
КонецФункции
///******************************** ADirks 03.08.2006

///******************************** ADirks 03.08.2006
// Предполагается что доп. данные имеют формат 'ID:<ИдентификаторТипаДействия>:<ИдентификаторОбъекта>'
Функция ПоказатьПоКоординатам(КоординатаX, КоординатаY) Экспорт
   Перем стрДопДанные;
   
   Меню = Сам(Контекст).ПолучитьБазовыйКласс();
   
   стрДействие   = Меню.ОткрытьМеню(стрДопДанные, 0, 0, 2, КоординатаX, КоординатаY);
   Если ПустаяСтрока(стрДопДанные) = 0 Тогда
       Возврат стрДопДанные;
   Иначе
       Возврат СтрЗаменить(стрДействие, "&", "");
   КонецЕсли;
КонецФункции
///******************************** ADirks 03.08.2006
2 ADirks
 
11.10.12
14:43
+ пример использования

   оМеню.ДобавитьСтроку("Новый", "Новый документ (Ins)", оМеню.ДобавитьКартинку("Новый"));
   оМеню.ДобавитьСтроку("Изменить", "Изменить (открыть)", оМеню.ДобавитьКартинку("Изменить"));
       Если фДокНеСуществует = 1 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   оМеню.ДобавитьСтроку("Просмотр", "Просморт", оМеню.ДобавитьКартинку("Просмотр"));
       Если фДокНеСуществует = 1 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   оМеню.ДобавитьСтроку("Копировать", "Копировать документ (F9)", оМеню.ДобавитьКартинку("Копировать"));
       Если фДокНеСуществует = 1 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   оМеню.ДобавитьСтроку("ВводНаОсновании", "Ввести на основании (Alt+F9)", оМеню.ДобавитьКартинку("ВводНаОсновании"));
       Если фДокНеСуществует = 1 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   оМеню.ДобавитьСтроку("Удалить", "Пометить на удаление (Del)", оМеню.ДобавитьКартинку("Удалить"));
       Если фДокНеСуществует = 1 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   
   оМеню.ДобавитьРазделитель();
   оМеню.ДобавитьСтроку("СделатьНепроведенным", "Сделать не проведенным");
       Если фДокПроведен = 0 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   оМеню.ДобавитьСтроку("ИзменитьВремя", "Изменить время документа...",);
       Если фДокНеСуществует + фДокПроведен > 0 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   оМеню.ДобавитьСтроку("ДвиженияДокумента", "Движения документа",);
       Если фДокПроведен = 0 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   оМеню.ДобавитьСтроку("ЖурналПодчиненных", "Под&чиненные документы", оМеню.ДобавитьКартинку(КаталогИБ() + "Images\подчиненные.bmp", 1));
       Если фДокНеСуществует = 1 Тогда оМеню.СделатьНеДоступным(); КонецЕсли;
   оМеню.ДобавитьСтроку("ДеревоДокументов", "Дерево документов (только вниз)", оМеню.ДобавитьКартинку("РежимИерархии"));
3 antoneus
 
11.10.12
15:46
Формекс умеет. Сервис.ВыбратьЗначение
4 varelchik
 
11.10.12
17:08
Всем спасибо уже нашел.
FormEx.
картинки из 1crcrus.dll