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