|   |   | 
| 
 | v7: Ограничение размера формы обработки при изменении размера окна | ☑ | ||
|---|---|---|---|---|
| 0
    
        Тёплый фарфор 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; КонецЕсли; ОбъектПривязка.ПриДвиженииМыши(Сост, Лево, Верх, ФСО); КонецПроцедуры | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |