Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Прыгает окно при изменении высоты (число прочтений - 5450 )
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Прыгает окно при изменении высоты
16. Февраля 2019 :: 20:44
Печать  
Выводится модальное окно:

Код (C++)
Выбрать все
ОткрытьФормуМодально("Обработка.НашаОбработка", лКонтекст);
 




В самой форме при нажатии на кнопку срабатывает вот такой код, который изменяет высоту формы:

Код (C++)
Выбрать все
	мРасширение = СоздатьОбъект("РасширениеФормы");
	лВысота = мРасширение.Высота;
	Если лВысота = 200 Тогда
		мРасширение.Высота = 400;
	Иначе
		мРасширение.Высота = 200;
	КонецЕсли;
 



Это приводит к тому, что окно "прыгает" по экрану.
Так как оно модальное, и 1С-ка видимо его центрирует на экране.

Как можно сделать, чтобы положение окна не менялось?
Чтобы верх окна оставался на одном и том же месте при изменении размера?

Пробовал запомнить координаты верха окна и после изменения высоты восстановить это положение.
Однако оказалось, что для модального окна Верх = 0.

Можно как-то решить проблему?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прыгает окно при изменении высоты
Ответ #1 - 18. Февраля 2019 :: 07:02
Печать  
Вроде как убрал центрирование в последнем релизе.
  

FormEx developer
Наверх
www  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Прыгает окно при изменении высоты
Ответ #2 - 18. Февраля 2019 :: 14:31
Печать  
АЛьФ писал(а) 18. Февраля 2019 :: 07:02:
Вроде как убрал центрирование в последнем релизе.


Имеется ввиду версия 2.0.5.142 от 15.02.2019?

Я именно на ней и проверял.
При выполнении команды "мРасширение.Высота = 200;" окошко прыгает вниз, а по команде "мРасширение.Высота = 400;" - вверх.

Так что похоже что оно все-таки центрируется.

Может быть это центрирование как-то включается\отключается?
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Прыгает окно при изменении высоты
Ответ #3 - 18. Февраля 2019 :: 15:16
Печать  
И еще вопрос.
Можно ли создать форму невидимую, вывести в нее все что нужно, а потом показать в модальном режиме отдельной командой?
  
Наверх
ICQ  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Прыгает окно при изменении высоты
Ответ #4 - 18. Февраля 2019 :: 15:37
Печать  
es3000 писал(а) 18. Февраля 2019 :: 14:31:
АЛьФ писал(а) 18. Февраля 2019 :: 07:02:
Вроде как убрал центрирование в последнем релизе.


Имеется ввиду версия 2.0.5.142 от 15.02.2019?

Я именно на ней и проверял.
При выполнении команды "мРасширение.Высота = 200;" окошко прыгает вниз, а по команде "мРасширение.Высота = 400;" - вверх.

Так что похоже что оно все-таки центрируется.

Может быть это центрирование как-то включается\отключается?


Центровка работает только для модальной формы.
Это повторение стандартного поведения окон 1с, это не ошибка, так задумано.

У меня при РасширениеФормы.Высота и РасширениеФормы.Ширина в не модальном режиме формы ничего не прыгает.
  
Наверх
www  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Прыгает окно при изменении высоты
Ответ #5 - 18. Февраля 2019 :: 15:57
Печать  
Djelf писал(а) 18. Февраля 2019 :: 15:37:
У меня при РасширениеФормы.Высота и РасширениеФормы.Ширина в не модальном режиме формы ничего не прыгает.


У меня модальное окно.
  
Наверх
ICQ  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Прыгает окно при изменении высоты
Ответ #6 - 18. Февраля 2019 :: 16:08
Печать  
es3000 писал(а) 18. Февраля 2019 :: 15:57:
Djelf писал(а) 18. Февраля 2019 :: 15:37:
У меня при РасширениеФормы.Высота и РасширениеФормы.Ширина в не модальном режиме формы ничего не прыгает.


У меня модальное окно.

Тогда так и должно быть.
Если отключить центровку по-умолчанию то у ВСЕХ модальное окно будет прыгать и непредсказуемо как.
Это слишком серьезное изменение.
Я категорически против.
  
Наверх
www  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Прыгает окно при изменении высоты
Ответ #7 - 18. Февраля 2019 :: 16:25
Печать  
Djelf писал(а) 18. Февраля 2019 :: 16:08:
Тогда так и должно быть.
Если отключить центровку по-умолчанию то у ВСЕХ модальное окно будет прыгать и непредсказуемо как.
Это слишком серьезное изменение.
Я категорически против.


А если сделать возможность отмены центровки у конкретного окна?

Например, вывели командой "ОткрытьФормуМодально" форму.
Оно от-центрировалось.
А дальше программист при вызове какого-либо метода, например при нажатии кнопки, может отменить центровку и делать с формой что ему угодно.
Это уже на его ответственности.

Типа вот так:

Код (C++)
Выбрать все
Процедура ПриНажатии_ВывестиДопСведения()
   РасшФормы.ОтключитьЦентровку();
   РасшФормы.Высота = 500;
КонецПроцедуры
 



Так можно сделать?
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Прыгает окно при изменении высоты
Ответ #8 - 19. Февраля 2019 :: 07:28
Печать  
Я хотел сделать что-то типа стандартного окна ошибки с кнопкой "Сведения...":

 

Пытался реализовать это путем изменения высоты окна.
Раз уж этот способ не работает, может быть как-то по другому можно сделать?

Посоветуйте пожалуйста что-нибудь?
  
Наверх
ICQ  
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Прыгает окно при изменении высоты
Ответ #9 - 19. Февраля 2019 :: 07:40
Печать  
На 142м Formex у меня не дергается.
Код
Выбрать все
	Ширина= 0; Высота= 0; Лево  = 0; Верх  = 0;

	РасширениеФормы.ЗапретитьОбновлениеОкна(1);
	Окна.ПоложениеОкна(Форма,Лево,Верх);
	Окна.РазмерОкна(Форма,Ширина,Высота);
	Окна.РазмерОкна(Форма,Ширина,Высота+200);
	Окна.ПоложениеОкна(Форма,Лево,Верх);
	РасширениеФормы.ЗапретитьОбновлениеОкна(0);
 

  
Наверх
www  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Прыгает окно при изменении высоты
Ответ #10 - 19. Февраля 2019 :: 09:34
Печать  
Djelf писал(а) 19. Февраля 2019 :: 07:40:
     Окна.ПоложениеОкна(Форма,Лево,Верх);


Ругается на "Окна".
Это объект? Его создавать надо?

  
Наверх
ICQ  
IP записан
 
recop
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 247
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Прыгает окно при изменении высоты
Ответ #11 - 19. Февраля 2019 :: 10:15
Печать  
es3000 писал(а) 19. Февраля 2019 :: 09:34:
Djelf писал(а) 19. Февраля 2019 :: 07:40:
     Окна.ПоложениеОкна(Форма,Лево,Верх);


Ругается на "Окна".
Это объект? Его создавать надо?



Код (C++)
Выбрать все
Функция ...
  Перем Лево,Верх;
  ...
  Окна=СоздатьОбъект("Окна");
  Окна.ПоложениеОкна(Форма,Лево,Верх);
  ...
КонецФункции
 

  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Прыгает окно при изменении высоты
Ответ #12 - 19. Февраля 2019 :: 11:36
Печать  
Спасибо! Разобрался.
Я создал объект "Окна" в глобальном модуле.
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Прыгает окно при изменении высоты
Ответ #13 - 19. Февраля 2019 :: 11:38
Печать  
Интересно, что "РасширениеФормы" и "Окна" выдают разные координаты текущего модального окна.

Например:
- "Окна": Верх: 363.   Высота = 511
- "Расширение": Верх: .   Высота = 486

У "Расширения" Верх вообще пустой.

Почему координаты отличаются?
Это ошибка?
Или так и должно быть?
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Прыгает окно при изменении высоты
Ответ #14 - 19. Февраля 2019 :: 12:02
Печать  
es3000 писал(а) 19. Февраля 2019 :: 11:38:
Интересно, что "РасширениеФормы" и "Окна" выдают разные координаты текущего модального окна.

Например:
- "Окна": Верх: 363.   Высота = 511
- "Расширение": Верх: .   Высота = 486

У "Расширения" Верх вообще пустой.

Почему координаты отличаются?
Это ошибка?
Или так и должно быть?


Координаты в расширении формы зависят от места вызова (создано ли уже окно и какой момент создания).
  

FormEx developer
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать