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

1С:Предприятие ::

Метки: 

v7: Ограничение размера формы обработки при изменении размера окна

Я
   Тёплый фарфор
 
18.09.17 - 10:29
Есть ли способ как-то обозначить минимальный размер окна формы и не давать его изменять ниже заданных границ?
Пробовал прикрутить костыли с помощью процедуры formex ПриИзмененииРазмераОкна() + эмуляция клавиши ESC в нужный момент, но как-то кривовато работает.
На формах журналов, справочников и документов ограничение по ширине работает же без шаманства, из коробки.
 
  Рекламное место пустует
   Ёпрст
 
1 - 18.09.17 - 10:34
(0) А зачем эмуляция эскейпа ? Просто возвращать старый(минимально необходимый) размер формы.
   Тёплый фарфор
 
2 - 18.09.17 - 10:47
(0) ESC - чтобы сбрасывать зажатую ЛКМ и потом установить размер формы.

Дело в том что метод РазмерОкна() работает не стабильно и у меня так и не получилось нормально устанавливать старые размеры.
Пробовал управлять размером и в ПриИзмененииРазмераОкна() и в других процедурах, которые по идее, можно использовать. Но везде как-то не кашерно получается: то форма уплывёт за пределы монитора, то нужно как-то сбросить ЛКМ...
   Ёпрст
 
3 - 18.09.17 - 12:32
(2) достаточно в ПриИзмененииРазмеровОкна устанавливать нужные размеры и всё.
   Ёпрст
 
4 - 18.09.17 - 13:01
тип того
Перем РасшФорма


Процедура ПриОткрытии()
    Попытка
        РасшФорма = СоздатьОбъект("РасширениеФормы");
    Исключение
        Если ЗагрузитьВнешнююКомпоненту("Formex.dll")=0 Тогда
            СтатусВозврата(0);
            Возврат;
        КонецЕсли;
        РасшФорма = СоздатьОбъект("РасширениеФормы");
    КонецПопытки;
КонецПроцедуры
//*******************************************

Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота)
    Если ТипЗначения(РасшФорма)=100 Тогда
        Если Ширина<300 Тогда
            РасшФорма.Ширина= 300;
        КонецЕсли;
        Если Высота<300 Тогда
            РасшФорма.Высота= 300;
        КонецЕсли;
    Иначе
        Возврат;
    КонецЕсли;
КонецПроцедуры
   Тёплый фарфор
 
5 - 18.09.17 - 13:19
В общем то да, это самое лучше решение. Не догадался в СП посмотреть. Всё смотрел на объект "Окна".
Правда форма дёргается постоянно, пока зажата ЛКМ и изменяются размеры программно, ну и ладно..
Спасибо!
   Ёпрст
 
6 - 18.09.17 - 13:29
(5) ну, Чтоб не дёргалась, можно фсо в 0 затачивать в ПриДвиженииМыши
   Ёпрст
 
7 - 18.09.17 - 13:30
если состояние =1 и флаг какой-нить хранить в приИзмененииРазмеровОкна
   Тёплый фарфор
 
8 - 18.09.17 - 13:50
теперь всё в шоколаде:

Процедура ПриИзмененииРазмераОкна(ТипСобытия, Ширина, Высота)

    _гФСО=1;
    _гТекШиринаОкна=Ширина; _гТекВысотаОкна=Высота;
    Если ТипЗначения(_гОбРасширениеФормы)=100 Тогда
        Если (_гТекШиринаОкна<_гМинШиринаОкнаФормы) ИЛИ (_гТекВысотаОкна<_гМинВысотаОкнаФормы) Тогда
            _гОбРасширениеФормы.Ширина=_гМинШиринаОкнаФормы;
            _гОбРасширениеФормы.Высота=_гМинВысотаОкнаФормы;
            _гФСО=0;
        КонецЕсли;    
    КонецЕсли;
    
    ОбъектПривязка.ПриИзмененииРазмераОкна(ТипСобытия, Ширина, Высота);

КонецПроцедуры

Процедура ПриДвиженииМыши(Сост, Лево, Верх, ФСО)
    Если Сост=1 Тогда ФСО=_гФСО; Иначе _гФСО=1; КонецЕсли;
    ОбъектПривязка.ПриДвиженииМыши(Сост, Лево, Верх, ФСО);
КонецПроцедуры


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