Вход | Регистрация
 

Программное добавление кнопок на командную панель (иерархически)

Программное добавление кнопок на командную панель (иерархически)
Я
   Антанас
 
25.08.09 - 17:29
Поделитесь куском кода пжлста, под рукой нет типовой конфы
   Mort
 
1 - 25.08.09 - 17:32
СП тож под рукой нет?
   Mort
 
2 - 25.08.09 - 17:32
КнопкиКоманднойПанели.Добавить (CommandBarButtons.Add)
КнопкиКоманднойПанели (CommandBarButtons)
Добавить (Add)
Синтаксис:
Добавить(<Имя>, <Тип кнопки>, <Текст>, <Действие>)
Параметры:
<Имя> (необязательный)
Тип: Строка. Имя кнопки - должно соответствовать правилам имен. Уникально в пределах командной панели. 
<Тип кнопки> (необязательный)
Тип: ТипКнопкиКоманднойПанели. Тип кнопки интерфейса (разделитель, подменю, действие).
Значение по умолчанию: Разделитель 
<Текст> (необязательный)
Тип: Строка. Текст кнопки. 
<Действие> (необязательный)
Тип: Действие. Действие, которое необходимо выполнить при нажатии на данную кнопку. Для типов кнопок Разделитель и Подменю, действие указывать не нужно.
Возвращаемое значение:
Тип: КнопкаКоманднойПанели.
Описание:
Добавляет кнопку в конец коллекции кнопок командной панели.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:
КП = ЭлементыФормы.КоманднаяПанель;
НовоеДействие = Новый Действие("МояПроцедураВМодулеФормы");
ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
НоваяКнопка = КП.Кнопки.Добавить("Действие1", ТипКнопки, , НовоеДействие);
   YV
 
3 - 25.08.09 - 17:34
Посмотри здесь
http://www.infostart.ru/projects/4648/
   Антанас
 
4 - 25.08.09 - 17:40
(2) я знаю, как кнопки добавлять.
специально для тебя объясняю:

Кнопка 1
Кнопка 2 
Подменю 1
   Кнопка 3
   Кнопка 4
Подменю 2
   Подменю 3
     Кнопка 5

Так понятно?
   Mort
 
5 - 25.08.09 - 17:45
(4)
КнопкаКоманднойПанели (CommandBarButton)
Свойства:
Действие (Action)
Доступность (Enabled)
ИзменяетДанные (ModifiesData)
Имя (Name)
Картинка (Picture)
КнопкаПоУмолчанию (DefaultButton)
Кнопки (Buttons)
Отображение (Representation)
Подсказка (ToolTip)
Пометка (Check)
ПорядокКнопок (ButtonOrder)
Пояснение (Description)
СочетаниеКлавиш (Shortcut)
Текст (Text)
ТипКнопки (ButtonType)
Описание:
Используется для доступа к свойствам кнопки командной панели.
Недоступен на сервере 1С:Предприятие. Не используется в модуле внешнего соединения.
Пример:
КП = ЭлементыФормы.КоманднаяПанель;
НовоеДействие = Новый Действие("ДобавочноеДействие");
ТипКнопки = ТипКнопкиКоманднойПанели.Действие; 
НоваяКнопка = КП.Кнопки.Добавить(ТипКнопки,,,НовоеДействие);
НоваяКнопка.Имя = "НоваяКнопка";
НоваяКнопка.Отображение = ОтображениеКнопкиКоманднойПанели.Картинка;
НоваяКнопка.Картинка = БиблиотекаКартинок.Лупа;
НоваяКнопка.Подсказка = "Вызов ""Добавочное действие""";
НоваяКнопка.Пояснение = "Кнопка, добавленная средствами языка"; // Сочетание клавиш Alt+Ctrl+F3 
СочетаниеКлавиш = Новый СочетаниеКлавиш(Клавиша.F3, Истина, Истина);
НоваяКнопка.СочетаниеКлавиш = СочетаниеКлавиш;
См. также:
КнопкиКоманднойПанели, свойство <Имя кнопки> ------   **** ВОТ ЭТО СМОТРИ ****
КнопкиКоманднойПанели, метод Вставить
КнопкиКоманднойПанели, метод Добавить
КнопкиКоманднойПанели, метод Найти
КнопкиКоманднойПанели, метод Индекс
КнопкиКоманднойПанели, метод Получить
   Mort
 
6 - 25.08.09 - 17:46
Короче у кнопки типа подменю есть свойство кнопки. Такого же типа как у КП.
   dmititro
 
7 - 25.08.09 - 17:46
КП = ЭлементыФормы.КоманднаяПанель;
НовоеДействие = Новый Действие("МояПроцедураВМодулеФормы1");
ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
НоваяКнопка = КП.Кнопки.Добавить("Действие1", ТипКнопки, , НовоеДействие);
КП = ЭлементыФормы.КоманднаяПанель;
НовоеДействие = Новый Действие("МояПроцедураВМодулеФормы2");
ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
НоваяКнопка = КП.Кнопки.Добавить("Действие2", ТипКнопки, , НовоеДействие);

ТипКнопки = ТипКнопкиКоманднойПанели.Подменю;
НоваяКнопка = КП.Кнопки.Добавить("Подменю", ТипКнопки, , НовоеДействие);

НовоеДействие = Новый Действие("МояПроцедураВМодулеФормы3");
ТипКнопки = ТипКнопкиКоманднойПанели.Действие;
НоваяКнопка = НоваяКнопка.Кнопки.Добавить("Действие3", ТипКнопки, , НовоеДействие);


Разве это не то, что тебе надо будет?
   Mort
 
8 - 25.08.09 - 17:47
(5) Не туда сунул надпись. Короче в (6) ответ.
   ren03
 
9 - 25.08.09 - 17:48
Запорлнение иерархической структуры подменю

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    ГруппыСобытий.Ссылка КАК ГруппаСобытий,
                   |    ГруппыСобытий.ЭтоГруппа КАК Группа,
                   |    ГруппыСобытий.Наименование КАК Наименование,
                   |    ГруппыСобытий.Код,
                   |    ГруппыСобытий.CRM_Подразделение Как Подразделение
                   |ИЗ
                   |    Справочник.ГруппыСобытий КАК ГруппыСобытий
                   |ГДЕ
                   |    ГруппыСобытий.ПометкаУдаления = ЛОЖЬ
                   |    И (ГруппыСобытий.CRM_Подразделение В(&Подразделения)
                   |    ИЛИ ГруппыСобытий.CRM_Подразделение ЕСТЬ NULL)
                   |АВТОУПОРЯДОЧИВАНИЕ
                   |";
                   
    Запрос.УстановитьПараметр("Подразделения", МассивПодразделений);

    Результат = Запрос.Выполнить();
    Выборка = Результат.Выбрать();

    Пока Выборка.Следующий() Цикл
        Если Выборка.Группа Тогда
            ТипКнопки=ТипКнопкиКоманднойПанели.ПодМеню;
        Иначе
            ТипКнопки=ТипКнопкиКоманднойПанели.Действие;
        КонецЕсли;
        ПунктМеню=ЭлементыФормы.КоманднаяПанельСостояние.Кнопки.ПодменюГруппа.Кнопки;
        
        Уровень=Выборка.ГруппаСобытий.Уровень();
        Родитель=Выборка.ГруппаСобытий;
        Для ТекУровень=0 по Уровень-1 Цикл
            Родитель=Выборка.ГруппаСобытий;
            Пока Уровень<>ТекУровень Цикл
                Родитель=Родитель.Родитель;
                Уровень=Родитель.Уровень();
            КонецЦикла;
            ПунктМеню=ПунктМеню.Найти(Родитель.код);
            Если ПунктМеню=Неопределено Тогда
                Сообщить("Для "+Родитель+" не найден пункт меню");
            Иначе
                ПунктМеню=ПунктМеню.Кнопки;
            КонецЕсли;
        КонецЦикла;
        
        ПунктМеню=ПунктМеню.Добавить(Выборка.Код,ТипКнопки,Выборка.Наименование,
        Новый Действие("ДействияФормыДействиеУстановитьГруппуСобытия"));
        
        Если НЕ Выборка.Группа Тогда
            ПунктМеню.ИзменяетДанные = Истина;
        КонецЕсли;
    КонецЦикла;
   Антанас
 
10 - 25.08.09 - 18:05
(9) спасиб

Список тем форума
 
Компьютер — устройство разработанное для ускорения и автоматизации человеческих ошибок.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.