|
v8: Видимость кнопки командной панели | ☑ | ||
---|---|---|---|---|
0
koketka
24.02.12
✎
11:36
|
В книге знаний есть это
v8: Видимость кнопки командной панелиК сожалению, управлять видимостью кнопки командной панели нельзя, поэтому единственный способ добиться аналогичного эффекта - добавление и удаление кнопки с панели. Здесь он реализован в виде красивой функции-обертки Автор статьи: Гений 1С | Редакторы: Последняя редакция №4 от 14.07.06 | История URL: Книга знаний: v8: Видимость кнопки командной панели Ключевые слова: видимость,кнопка,командная панель Условие видимости - условие, когда кнопка видима, то "Истина", иначе "Ложь". ИмяКнопки - идентификатор кнопки. Панель - командная панель, содержащая кнопку П - структура описывающая кнопку, поля: Тип - если не определен, предполагается тип Кнопка (бывает еще разделитель) Текст - подпись кнопки Действие - имя процедуры-обработчика события или конкретный объект типа "Действие" КнопкаПеред - перед какой кнопкой вставлять кнопку (индекс кнопки с нуля или ссылка на кнопку). Если не определено, кнопка добавляется в конец. //Динамическая кнопка, которая присутствует, отсутствует в зависимости от условия //КнопкаПеред - перед какой кнопкой вставить, если не определено, то в конец панели добавляется //П - структура, описывающая кнопку // Тип, Текст, Действие Функция обДинамическаяКнопка(УсловиеВидимости, ИмяКнопки, Панель, П=Неопределено, КнопкаПеред=Неопределено) Экспорт Перем Тип, Текст, Действие; //Определяем, есть кнопка или нет Кнопка=Панель.Кнопки.Найти(ИмяКнопки);; //Если условие истинно и кнопки нет, добавляем Если УсловиеВидимости и Кнопка=Неопределено Тогда //Если условие ложно и кнопка есть - удаляем Если ТипЗнч(КнопкаПеред)=Тип("КнопкаКоманднойПанели") Тогда ИндексКнопки=Панель.Кнопки.Индекс(КнопкаПеред); ИначеЕсли ТипЗнч(КнопкаПеред)=Тип("Число") Тогда ИндексКнопки=Мин(Панель.Кнопки.Количество(), КнопкаПеред); Иначе ИндексКнопки=Панель.Кнопки.Количество(); //в конец КонецЕсли; П.Свойство("Тип", Тип); П.Свойство("Текст", Текст); П.Свойство("Действие", Действие); Если ТипЗнч(Действие)=Тип("Строка") Тогда Действие=Новый Действие(Действие); КонецЕсли; Если Тип=Неопределено Тогда Тип=ТипКнопкиКоманднойПанели.Действие; КонецЕсли; Панель.Кнопки.Вставить(ИндексКнопки, ИмяКнопки, Тип, Текст, Действие); ИначеЕсли НЕ УсловиеВидимости и Кнопка<> Неопределено Тогда Панель.Кнопки.Удалить(Кнопка); КонецЕсли; КонецФункции У меня ругается на строчки П.Свойство("Тип", Тип);может я тип кнопки не так описываю когда я обращаюс к процедуре |
|||
1
koketka
24.02.12
✎
11:36
|
Никак не пойму как правильно прописать подскажите?
|
|||
2
Wobland
24.02.12
✎
11:37
|
(0) ну и что у тебя в переменной Тип находится?
|
|||
3
Wobland
24.02.12
✎
11:38
|
(2) хм, и что там у гения ?
|
|||
4
zbv
24.02.12
✎
11:38
|
(0) а что в переменной П ?
и как ругается ? |
|||
5
koketka
24.02.12
✎
11:39
|
ТипЗнч(ЭлементыФормы.КоманднаяПанель1.Кнопки.Подбор)и так пробова и просто так ЭлементыФормы.КоманднаяПанель1.Кнопки.Подбор
|
|||
6
koketka
24.02.12
✎
11:40
|
ЭлементыФормы.КоманднаяПанель1.Кнопки.Подбор - {ОбщийМодуль.ОбщегоНазначения(2752)}: Метод объекта не обнаружен (Свойство)
П.Свойство("Тип", Тип); |
|||
7
koketka
24.02.12
✎
11:42
|
ТипЗнч(ЭлементыФормы.КоманднаяПанель1.Кнопки.Подбор) -
{ОбщийМодуль.ОбщегоНазначения(2752)}: Значение не является значением объектного типа (Свойство) П.Свойство("Тип", Тип); |
|||
8
zbv
24.02.12
✎
11:43
|
//П - структура, описывающая кнопку
значит у тебя не структура. Надо бы в функцию добавить проверку на то, что "П" не структура. |
|||
9
koketka
24.02.12
✎
11:49
|
Я что то ничего не понимаю вот моя кнопка ЭлементыФормы.КоманднаяПанель1.Кнопки.Подбор Что я должна прописать при вызови функции обДинамическаяКнопка(УсловиеВидимости, ИмяКнопки, Панель, П=Неопределено, КнопкаПеред=Неопределено)
|
|||
10
Reset
24.02.12
✎
11:51
|
(9) Это прямо зависит от того, что ты хочешь сделать
|
|||
11
koketka
24.02.12
✎
11:52
|
(10) Там в документе если галочка стоит то кнопка должна быть видна, а если не стоит то не видно
|
|||
12
koketka
24.02.12
✎
11:53
|
видна*
|
|||
13
zbv
24.02.12
✎
11:57
|
П - структура описывающая кнопку, поля:
Тип - если не определен, предполагается тип Кнопка (бывает еще разделитель) Текст - подпись кнопки Действие - имя процедуры-обработчика события или конкретный объект типа "Действие" надо что-то типа: обДинамическаяКнопка(МояГалочка, "Подбор", ЭлементыФормы.КоманднаяПанель1, Новый Структура("Тип, Текст, Действие", ТипКнопкиКоманднойПанели.Действие, "Подбор", "имяПроцедурыДействия")) тут "МояГалочка" и "имяПроцедурыДействия" заменить на свои |
|||
14
Reset
24.02.12
✎
11:57
|
(11)
обДинамическаяКнопка(ТаХитраяГалочкаКотораяВДокументеТолькоНевздумайЭлементУправленияУказыватьАУказывайБулевоЗначение, "Подбор", ЭлементыФормы.КоманднаяПанель1, Новый Структура("Текст,Действие","Подбор","ИмяПроцедурыКотораядолжныВызватьсяПриНажатииНаЭтуКнопку")); |
|||
15
Reset
24.02.12
✎
11:59
|
(13) С "Типом" ошибся, а так верно
|
|||
16
Reset
24.02.12
✎
11:59
|
(15) Не, не ошибся, беру слова назад
|
|||
17
zbv
24.02.12
✎
12:00
|
(16) не пугай так, пришлось СП открывать :)
|
|||
18
Reset
24.02.12
✎
12:03
|
(17) Извини)
|
|||
19
koketka
24.02.12
✎
12:31
|
Мальчики спасибо!!! вы прелесть!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |