|
v7: Запретить изменение размеров окна | ☑ | ||
---|---|---|---|---|
0
MWWRuza
гуру
23.02.22
✎
01:43
|
Добрый день!
Хочу получить что-то такое, как при снятой "галочке" - "Изменять размер" в свойствах формы, и модальном режиме, только без модальности... Формексом, делаю так: Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота) РасшФорма = СоздатьОбъект("РасширениеФормы"); РасшФорма.УстановитьФорму(Форма); СтарШирина = РасшФорма.Ширина; СтарВысота = РасшФорма.Высота; РасшФорма.Ширина = СтарШирина; РасшФорма.Высота = СтарВысота; КонецПроцедуры Казалось-бы, ничего сложного, должно работать... Но, не работает. Старые размеры получаю, в отладке вижу, а новые не устанавливаются. При этом, если явно, числами прописать размеры - то срабатывает... Знатоки формекса, подскажите плиз? |
|||
1
Злопчинский
23.02.22
✎
02:35
|
Где числами прописать размеры(?)
|
|||
2
Злопчинский
23.02.22
✎
02:36
|
С моей точки зрения код бредовый
|
|||
3
Злопчинский
23.02.22
✎
02:40
|
СтарШирина = РасшФорма.Ширина
РасшФорма.Ширина = СтарШирина; СтарВысота = РасшФорма.Высота; РасшФорма.Высота = СтарВысота; Мне кажется что от такого кода ничего не изменится |
|||
4
MWWRuza
гуру
23.02.22
✎
09:58
|
В том-то и дело, что ничего не меняется...
Вот так: Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота) РасшФорма = СоздатьОбъект("РасширениеФормы"); РасшФорма.УстановитьФорму(Форма); СтарШирина = РасшФорма.Ширина; СтарВысота = РасшФорма.Высота; // РасшФорма.Ширина = 318; // РасшФорма.Высота = 325; КонецПроцедуры В отладчике получаю: СтарШирина = 318 СтарВысота = 325 Потом, делаю так: Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота) РасшФорма = СоздатьОбъект("РасширениеФормы"); РасшФорма.УстановитьФорму(Форма); // СтарШирина = РасшФорма.Ширина; // СтарВысота = РасшФорма.Высота; РасшФорма.Ширина = 318; РасшФорма.Высота = 325; КонецПроцедуры комментирую получение исходной ширины/высоты и задаю ширину и высоту полученными числами явно. Пытаюсь менять размеры открытой формы - не меняются, она только противно мелькает при попытке изменить размер, но размер остается тем-же... А вместе - в одной процедуре не работает, размеры меняются как хочешь, как будто и нет этой процедуры... Не то, что-бы это было особо нужно, просто хочу разобраться. |
|||
5
MWWRuza
гуру
23.02.22
✎
10:12
|
Чисто с прикладной стороны, самое красивое поведение формы штатное, без формекса, со снятой галкой "Изменять размер" и при открытии ее модально. Окошко фиксированного размера, не зависит от того, максимизированы ли другие формы, или нет, таскается по всему экрану за заголовок как хочешь... Думал, формексом нечто-подобное сотворить без модальности, но не получается...
|
|||
6
delavar
23.02.22
✎
10:14
|
Через обработчик ожидание с интервалом в 0.1 сек. Такой прием часто использовали в старых конфах на УФ
|
|||
7
MWWRuza
гуру
23.02.22
✎
10:37
|
(6) Попробовал:
Перем РасшФорма; Перем СтарШирина; Перем СтарВысота; Процедура ИзмРазмФормы() РасшФорма.Ширина = СтарШирина; РасшФорма.Высота = СтарВысота; РасшФорма.ОбработкаОжидания("",0); РасшФорма = ""; КонецПроцедуры Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота) РасшФорма = СоздатьОбъект("РасширениеФормы"); РасшФорма.УстановитьФорму(Форма); СтарШирина = РасшФорма.Ширина; СтарВысота = РасшФорма.Высота; РасшФорма.ОбработкаОжидания("ИзмРазмФормы", 100); КонецПроцедуры Все равно не работает... |
|||
8
uno-group
23.02.22
✎
10:40
|
При открытии формы запоминай старые размеры и потом не давай их менять
|
|||
9
Злопчинский
23.02.22
✎
10:58
|
мдя, весьма интересное поведение, особенно при задании старых размеров числами явно - работает, через переменные - не работает. даже с попыткой явного приведения к числу через Число(СтарВысота);
|
|||
10
Злопчинский
23.02.22
✎
11:11
|
хм, а чтобы, например, нужную форму не открыть в модальном режиме если не хочется менять размер?
|
|||
11
Злопчинский
23.02.22
✎
11:13
|
Вот так - работает
|
|||
12
Злопчинский
23.02.22
✎
11:14
|
Перем РасшФорма;
Перем СтарШирина; Перем СтарВысота; Перем Я; Процедура ИзмРазмФормы() Сообщить(ТекущееВремя()+": ИзмРазмФормы()"); РасшФорма.ОбработкаОжидания("",0); РасшФорма.Ширина = СтарШирина; РасшФорма.Высота = СтарВысота; КонецПроцедуры Процедура ПриИзмененииРазмераОкна(ТипСобытия,Ширина,Высота) Сообщить(ТекущееВремя()+": ПриИзмененииРазмераОкна()"); Если Я = 0 Тогда Возврат; КонецЕсли; РасшФорма.ОбработкаОжидания("ИзмРазмФормы", 100); КонецПроцедуры Процедура ПослеОткрытия() Я = 1; Сообщить(ТекущееВремя()+": ПослеОткрытия()"); РасшФорма = СоздатьОбъект("РасширениеФормы"); СтарШирина = РасшФорма.Ширина; СтарВысота = РасшФорма.Высота; КонецПроцедуры Я = 0; |
|||
13
MWWRuza
гуру
23.02.22
✎
11:15
|
(8) Хм...
Тут, какая-то фигня получается - такое чувство, что ловятся размеры формы пока она еще не до конца открылась, что-то в районе 200... И такие размеры фиксируются. Попробовал перенести получение размеров в процедуру "ПослеОткрытия()", еще хуже: СтарШирина = 112 СтарВысота = 0 (10) Да можно конечно, "но мы не ищем легких путей!" :-) По сути, тема "пятничная", хоть вчера был и вторник, но перед выходным. Кстати, всех с праздником! |
|||
14
Ёпрст
23.02.22
✎
11:15
|
(0)
какой то поток сознания. Вообще не вкурил, в чём у тебя проблема, ну окромя того, что (0) в топку
|
|||
15
Злопчинский
23.02.22
✎
11:17
|
(13) Приизменении размеров отрабатывается еще до открытия
|
|||
16
Злопчинский
23.02.22
✎
11:21
|
да, Епрст лучше написал, можно без ОО обойтись
|
|||
17
Ёпрст
23.02.22
✎
11:26
|
А если еще в ПриНажатииЛевойКнопки отловить заголовок формы, то можно его навсегда застолбить на одном месте, делая ФСО=0 в этой проце.
|
|||
18
Ёпрст
23.02.22
✎
11:27
|
+17 * застолбить форму в нужном месте экрана
|
|||
19
MWWRuza
гуру
23.02.22
✎
11:41
|
Да, так работает, спасибо! :-)
Че-то я процедуру "ПослеСозданияФормы()" проглюядел, уперся в "ПослеОткрытия()", а это конечно не то... |
|||
20
Злопчинский
23.02.22
✎
11:44
|
(19) После открытия тоже работает. ты куда-то не там уперся. явно ;-)
|
|||
21
MWWRuza
гуру
23.02.22
✎
11:46
|
+(19) Единственное отличие от модально открытой формы, что если поверх нее открыть другую форму и максимизировать ее, то при выборе в трее этой формы(типа вытащить ее на передний план), новая тоже становится не максимизированной... В случае модальной формы, такого не происходит, она не влияет на другие формы.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |