Доступ к панели строки состояния?

Автор MWW_Ruza, Вчера в 23:54

« назад - далее »

MWW_Ruza

Добрый день!
А вот интересно, сюда:

как-то можно джобраться?
Хочется сделать что-то типа такого:

На вскидку не нашел ничего такого, может плохо искал...

MWW_Ruza

Хотя, наверное действительно плохо искал...
Вот, похоже это:

ДобавитьПанель(<?>,,,,)
Синтаксис:
ДобавитьПанель(<Наименование>,<Заголовок>,<Ширина>,<Стиль>,<Видимость>)
Назначение:
Метод добавляет панель с заданными параметрами. Панель становится текущей. В случае успеха возвращает код новой панели.
Панели, добавленные в основной части глобального модуля (после функций и процедур), будут расположены перед системными. Все остальные после системных.
Параметры:
<Наименование> - наименование панели, не обязательный, по умолчанию пустая строка;
<Заголовок> - заголовок панели, не обязательный, по умолчанию пустая строка;
<Ширина> - ширина панели, не обязательный, по умолчанию 20;
<Стиль> - стиль панели, не обязательный, по умолчанию 0;
<Видимость> - видимость панели, не обязательный, по умолчанию 0.

MWW_Ruza

Да, все ничего... Добавление панели работает.
Так:
Процедура ПриДвойномНажатииЛевойКнопкиВСтрокеСостояния(ИД)
    НайдПан    = Панель.НайтиПоНаименованию("РежОтл");
    Если НайдПан = 0 Тогда
        Если Вопрос("Включить режим сохранения запросов?", 4, 3) = 6 Тогда
            Панель.ДобавитьПанель("РежОтл", "Вкл. реж. сохр. запр.", 120,,1);
        КонецЕсли;
    Иначе
        Если Вопрос("Выключить режим сохранения запросов?", 4, 3) = 6 Тогда
            Панель.УдалитьПанель();    
        КонецЕсли;        
    КонецЕсли;
КонецПроцедуры

Но, УдалитьПанель() крашит 1С... Что я не так делаю?

MWW_Ruza

Хм... И Видимость тоже роняет 1С, так:
Процедура ПриДвойномНажатииЛевойКнопкиВСтрокеСостояния(ИД)
	Если ПустоеЗначение(КодПан) = 0 Тогда
		НайдПан	= Панель.НайтиПоКоду(КодПан);    
	Иначе	
		СтатусВозврата(0);
		Возврат;
	КонецЕсли;
	Панель.ВыбратьПанели();
	Пока Панель.ПолучитьПанель() = 1 Цикл
		Если Панель.Код = КодПан Тогда
			Если Панель.Видимость = 0 Тогда
				Если Вопрос("Включить режим сохранения запросов?", 4, 3) = 6 Тогда
					Панель.Видимость = 1;	
				КонецЕсли;
			Иначе
				Если Вопрос("Выключить режим сохранения запросов?", 4, 3) = 6 Тогда
					Панель.Видимость = 0;    
				КонецЕсли;				
			КонецЕсли;
			Прервать;
		КонецЕсли;    
	КонецЦикла;
КонецПроцедуры

MWW_Ruza

Понятно...
Если при "выключении" панели кликать на ней, то ничего не падает. А если в любом другом месте строки состояния - то краш... Буду думать, как обойти.

MWW_Ruza

В общем, вот так работает:
Процедура ПриДвойномНажатииЛевойКнопкиВСтрокеСостояния(Конт, ИДпанели)
	Если ПустоеЗначение(КодПан) = 0 Тогда
		НайдПан	= Панель.НайтиПоКоду(КодПан);    
	Иначе	
		СтатусВозврата(0);
		Возврат;
	КонецЕсли;
	Панель.ВыбратьПанели();
	Пока Панель.ПолучитьПанель() = 1 Цикл
		Если Панель.Код = КодПан Тогда
			Если Панель.Видимость = 0 Тогда
				Если Вопрос("Включить режим сохранения запросов?", 4, 3) = 6 Тогда
					Панель.Видимость = 1;	
				КонецЕсли;
			Иначе
				Если ИДпанели = Панель.Код Тогда
					Если Вопрос("Выключить режим сохранения запросов?", 4, 3) = 6 Тогда
						Панель.Видимость = 0;    
					КонецЕсли;
				КонецЕсли;				
			КонецЕсли;
			Прервать;
		КонецЕсли;    
	КонецЦикла;
КонецПроцедуры
Думаю, так и через Добавление/Удаление панели заработает...
Но, теперь уже завтра.

vladmenleo

Цитата: MWW_Ruza от Сегодня в 01:45Думаю, так и через Добавление/Удаление панели заработает...
У меня вот так работает уже достаточно давно
КодНовойПанели = Панель.ДобавитьПанель("ПанельПрогресс","",150,0,1);
и в конце
Панель.НайтиПоКоду(КодНовойПанели);
Панель.УдалитьПанель();