Имя: Пароль:
1C
1C 7.7
v7: formex - можно ли сделать модальное окно изменяемым?
0 Chai Nic
 
16.09.22
11:01
Хочется, чтобы вызываемая модально служебная обработка позволяла максимизацию и изменение размеров окна. Но штатно в 1с модальное окно рисуется с признаком "без рамки ,без кнопок изменения размера". Есть ли в formex такая возможность, чтобы модальное окно можно было растягивать как обычное?
1 Kigo_Kigo
 
16.09.22
11:09
а зачем?
2 Chai Nic
 
16.09.22
11:11
(1) Для удобства. Речь об универсальной обработке, в которой заполняется таблица, заранее неизвестного состава. Поэтому нужно чтобы пользователь мог развернуть окно и заполнить данные без лишнего скролла.
3 Kigo_Kigo
 
16.09.22
11:21
Я не помню, как то делал модальные окна разных размеров для разных разрешений экранов, а как хоть убей не помню
4 АЛьФ
 
02.11.22
12:09
С помощью FormEx можно изменять размеры модального окна. На основе этого функционала можно реализовать и разворачивание во весь экран.
5 Chai Nic
 
02.11.22
13:08
(4) А как? Можно поподробнее?
6 vladmenleo
 
02.11.22
13:27
(5) что-то типа такого
Процедура ПослеОткрытия()
    Перем Ширина,Высота;
    Окна = СоздатьОбъект("Окна");
    Окна.Максимизировать(Форма);
    Если ИмяПользователя() = "Тсд" Тогда
        Окна.МенюОкна(,1,0,0,0);
        Окна.ПоказыватьПанели(0); // 0 - Скрывает панели
        Сп = Окна.ПолучитьМеню();
        Для Ид = 1 По Сп.РазмерСписка() Цикл
            Пред = "";
            Зн = Сп.ПолучитьЗначение(Ид, Пред);
            Окна.ВидимостьМеню(Пред, 0); // 0 - Скрывает меню
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Процедура ПриИзмененииРазмераОкна(ТипСобытия, НоваяШирина, НоваяВысота)
    Перем Лево,Верх,Ширина,Высота;
    Оступ = 2;
    ИмяТ = "ТзНаФорме";
    афТаблица = РасширениеФормы.ПолучитьАтрибут(ИмяТ);
    афТаблица.ПолучитьКоординаты(Лево,Верх,Ширина,Высота);
    афТаблица.УстановитьКоординаты(Оступ, Верх, НоваяШирина - 20, НоваяВысота - 75);
    афТаблица.ПолучитьКоординаты(Лево,Верх,Ширина,Высота);
    ВерхКнопок = Верх + Высота + Оступ;
    СписокКнопок = СоздатьОбъект("СписокЗначений");
    СписокКнопок.ДобавитьЗначение("ТекстКоды");
    СписокКнопок.ДобавитьЗначение("ВыбранныеКоды");
    Для Ид = 1 По СписокКнопок.РазмерСписка() Цикл
        ИмяКн = СписокКнопок.ПолучитьЗначение(Ид);
        афТаблица = РасширениеФормы.ПолучитьАтрибут(ИмяКн);
        афТаблица.ПолучитьКоординаты(Лево,Верх,Ширина,Высота);
        афТаблица.УстановитьКоординаты(Лево, ВерхКнопок, Ширина, Высота);
    КонецЦикла;
    СписокКнопок.УдалитьВсе();
    СписокКнопок.ДобавитьЗначение("кнНайти");
    СписокКнопок.ДобавитьЗначение("КнПечать");
    ВерхКнопок = ВерхКнопок + Высота + 6;
    Для Ид = 1 По СписокКнопок.РазмерСписка() Цикл
        ИмяКн = СписокКнопок.ПолучитьЗначение(Ид);
        афТаблица = РасширениеФормы.ПолучитьАтрибут(ИмяКн);
        афТаблица.ПолучитьКоординаты(Лево,Верх,Ширина,Высота);
        афТаблица.УстановитьКоординаты(Лево, ВерхКнопок, Ширина, Высота);
    КонецЦикла;
КонецПроцедуры
У меня тут для определенного пользователя при начале работы системы открывается модально окно на весь экран, при закрытии выход из системы
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший