Имя: Пароль:
1C
1С v8
Скрытие панелей на форме: как растянуть оставшиеся панели на свободное место
,
0 Антиквар
 
24.06.14
13:03
Всем привет!
Для простоты рассмотрим примитивный пример:
на форме есть две панели: левая и правая, и между ними разделитель, чтобы пользователь мог менять ширину панелей.
Требуется, чтобы левую панель можно было скрыть по кнопке, при этом чтобы правая панель растянулась на всю форму.
Разделитель и правая панель привязаны к правой границе левой панели.
Если убрать видимость левой панели, то естественно ничего не сдвинется, т.к. панель она останется на форме.
Делаю так:
ЭлементыФормы.ПанельЛевая.Свертка = РежимСверткиЭлементаУправления.Лево;
ЭлементыФормы.Разделитель1.Свертка = РежимСверткиЭлементаУправления.Лево;

Не помогает.

Добавляю программную переустановку привязок:

ЭлементыФормы.ПанельПравая.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭлементыФормы.Разделитель1, ГраницаЭлементаУправления.Право);

Тоже не помогает, ничего не растягивается. Что ещё нужно сделать?
Или вообще, как правильно это реализовывается?
1 Антиквар
 
24.06.14
15:36
up
2 vasbur
 
24.06.14
15:41
по моему опыту - либо перетаскивание, либо скрытие.
Одновременно и то и се у меня тоже не получалось настроить.
3 sirsp
 
24.06.14
15:47
(0) Свертка:
1. Сбросить привязку левой панели;
2. Переустановить привязку разделителя к левой панели;
3. Свернуть левую панель;
4. Свернуть разделитель.

Развертка:
1. Развернуть разделитель;
2. Развернуть левую панель;
3. Восстановить привязки.
4 Антиквар
 
24.06.14
16:13
(3) Что-то не получается, может не так понял Вас.
По свертке пункт 1, действительно нужно сбросить привязку левой панели, или может нужно сбросить привязку других элементов к левой панели?
5 sirsp
 
24.06.14
16:23
(4) Значит начальные привязки кривые. Должно быть:
Левая панель
Левая сторона к форме, правая сторона к левой стороне разделителя.
Разделитель
Правая сторона к левой стороне разделителя.
Правая панель
Левая сторона к правой стороне разделителя, правая сторона к форме.
+ Сворачивать только влево.
Да, достаточно сбросить правую привязку левой панели.
6 Антиквар
 
24.06.14
16:43
(5) Проверил, мои привязки такие же.
Вот только у разделителя непонятно к чему привязывать левую сторону. Я привязал к левой стороне левой панели. У Вас не написано куда надо. В остальном всё также.
По нажатию кнопки левая панель с разделителем исчезают, а левая сторона правой панели еле заметно сдвигается влево, а надо чтобы на всю форму.
7 Антиквар
 
24.06.14
16:48
Вот код по нажатию кнопки:

ЭлементыФормы.ПанельЛевая.УстановитьПривязку(ГраницаЭлементаУправления.Право);
ЭлементыФормы.Разделитель1.УстановитьПривязку(ГраницаЭлементаУправления.Лево, ЭлементыФормы.ПанельЛевая, ГраницаЭлементаУправления.Лево);
ЭлементыФормы.Разделитель1.УстановитьПривязку(ГраницаЭлементаУправления.Право, ЭлементыФормы.Разделитель1,  ГраницаЭлементаУправления.Лево);
ЭлементыФормы.ПанельЛевая.Свертка = РежимСверткиЭлементаУправления.Лево;
ЭлементыФормы.Разделитель1.Свертка = РежимСверткиЭлементаУправления.Лево;
8 sirsp
 
24.06.14
16:58
9 sirsp
 
24.06.14
17:02
(7) 1. Разделитель надо привязывать к _правой_ стороне левой панели.
2. Правую привязку трогать не нужно.

Короче см. обработку.

А что касается привязки левой стороны разделителя, то я ее никуда не привязывал. Но по желанию можно привязать куда угодно, но к форме!
10 Антиквар
 
24.06.14
17:21
(9) Спасибо большое за обработку. Видимо в привязке разделителя у меня косяк. К правой стороне левой панели и мне казалось логичнее, но выдавало ошибку, что привязки установлены неверно.
Ещё раз спасибо!