Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Распахнуть форму, без максимизации формы (число прочтений - 4541 )
ukko
Junior Member
**
Отсутствует


I Love FormEx

Сообщений: 20
Местоположение: Россия, Удмуртия, Глазов
Зарегистрирован: 16. Декабря 2007
Пол: Мужской
Распахнуть форму, без максимизации формы
01. Февраля 2008 :: 09:03
Печать  
Здравствуйте, столкнулся с проблемой.

Мне необходимо распахнуть (максимизировать) окно формы обработки, при этом НЕ максимизируя форму. Т.е. выполнить следующий код:

Код
Выбрать все
рфФорма = СоздатьОбъект("РасширениеФормы");
рфФорма.Верх = 0;
рфФорма.Лево = 0;
рфФорма.Высота = ВЫСОТА_КЛИЕНТСКОЙ_ЧАСТИ_ОКНА;
рфФорма.Ширина = ШИРИНА_КЛИЕНТСКОЙ_ЧАСТИ_ОКНА; 



Собственно вопрос, как мне узнать эти значения: ВЫСОТА_КЛИЕНТСКОЙ_ЧАСТИ_ОКНА и ШИРИНА_КЛИЕНТСКОЙ_ЧАСТИ_ОКНА.

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

Если проще, то мне надо узнать координаты клиентской части окна программы.

Спасибо за ответы, может кто-то уже сталкивался с подобной задачей.
Функция РазмерОкна, мне не помогла Печаль
  
Наверх
GTalkICQ  
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Распахнуть форму, без максимизации формы
Ответ #1 - 01. Февраля 2008 :: 09:37
Печать  
Если не опечалит махание окошком, то примерно так :
Код
Выбрать все
Процедура Сформировать()
	ок = СоздатьОбъект( "Окна" );
	ок.Максимизировать(форма);
	Ширина = 0;
	Высота = 0;
	ок.РазмерОкна( Форма, Ширина, Высота );
	Ширина = Ширина - 12;
	Высота = Высота - 32;
	ок.Восстановить(форма);
	ок.РазмерОкна( Форма, Ширина, Высота );
	ок.ПоложениеОкна( Форма, 0, 0 );
КонецПроцедуры
 

  
Наверх
ICQ  
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Распахнуть форму, без максимизации формы
Ответ #2 - 01. Февраля 2008 :: 10:10
Печать  
Все гораздо проще.
Код
Выбрать все
ШиринаОкнаПрограммы=0;ВысотаОкнаПрограммы=0;
Окна.РазмерОкна(,ШиринаОкнаПрограммы,ВысотаОкнаПрограммы,,1); //если последний параметр не равен 0, то окно MDI
 

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


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Распахнуть форму, без максимизации формы
Ответ #3 - 01. Февраля 2008 :: 16:35
Печать  
Ну, следовало предполагать.. Актуальность доки -- того-этого.
Улыбка
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Распахнуть форму, без максимизации формы
Ответ #4 - 02. Февраля 2008 :: 20:14
Печать  
dnp писал(а) 01. Февраля 2008 :: 16:35:
Ну, следовало предполагать.. Актуальность доки -- того-этого.
Улыбка


кстати по это вроде в доке написано.  Улыбка
ну по крайней мере я об этом знаю... (есть небольшой класс который эмулирует DockingPane.... правда весьма кривовато получается ввиду того что невозможно получить момент изменения клиентской части, только через обработку ожидания)
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
ukko
Junior Member
**
Отсутствует


I Love FormEx

Сообщений: 20
Местоположение: Россия, Удмуртия, Глазов
Зарегистрирован: 16. Декабря 2007
Пол: Мужской
Re: Распахнуть форму, без максимизации формы
Ответ #5 - 04. Февраля 2008 :: 08:02
Печать  
К сожалению, мне не помогли ваши решения.

Вот код процедуры и скриншот окна:
[code]//_____________________________________________________________________
Процедура ПослеОткрытия()
     //** Графическое представление Формы и элементов Формы
     РазместитьЭлементыНаФорме();
     ОбновитьДанные();
     
     //ТУДУ: Допилить, если разработчики отпишутся на форуме по этому багу
     ШиринаОкнаПрограммы=0;ВысотаОкнаПрограммы=0;
     Окна = СоздатьОбъект("Окна");
     Окна.РазмерОкна("",ШиринаОкнаПрограммы,ВысотаОкнаПрограммы,,1);            
     рфФорма.Верх = 0;
     рфФорма.Лево = 0;
     рфФорма.Высота = ВысотаОкнаПрограммы;
     рфФорма.Ширина = ШиринаОкнаПрограммы;
     наПрограммы);
КонецПроцедуры      // ПослеОткрытия[/code]

Похоже, что всё таки не учитываются панели, и бордеры окна (что очень важно!).

Версия FormEx 2.0.5.82 beta

Если проблема не у меня одного, то конечно я отпишусь в багзилле. Мне кажется что это действительно ошибка FormEx.
  

2008-02-04_115656.png ( 34 KB | Загрузки )
2008-02-04_115656.png
Наверх
GTalkICQ  
IP записан
 
aou1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 183
Местоположение: Екатеринбург
Зарегистрирован: 29. Мая 2006
Пол: Мужской
Re: Распахнуть форму, без максимизации формы
Ответ #6 - 05. Февраля 2008 :: 18:17
Печать  
dnp писал(а) 01. Февраля 2008 :: 09:37:
Если не опечалит махание окошком, то примерно так :
Код
Выбрать все
Процедура Сформировать()
	ок = СоздатьОбъект( "Окна" );
	ок.Максимизировать(форма);
	Ширина = 0;
	Высота = 0;
	ок.РазмерОкна( Форма, Ширина, Высота );
	Ширина = Ширина - 12;
	Высота = Высота - 32;
	ок.Восстановить(форма);
	ок.РазмерОкна( Форма, Ширина, Высота );
	ок.ПоложениеОкна( Форма, 0, 0 );
КонецПроцедуры
 



Махание можно убрать
ок.Прозрачность = 0;
  
Наверх
ICQ  
IP записан
 
ukko
Junior Member
**
Отсутствует


I Love FormEx

Сообщений: 20
Местоположение: Россия, Удмуртия, Глазов
Зарегистрирован: 16. Декабря 2007
Пол: Мужской
Задача решена.
Ответ #7 - 06. Февраля 2008 :: 07:44
Печать  
Спасибо всем за помощь. Всё дело оказалось в моей не внимательности. Упорно не видел "НЕ" в описании Печаль

Вот работающий код, который и учитывает темы оформления окон и нестандартное расположение панелек инструментов.

Код
Выбрать все
Процедура Сформировать()
	Окна = СоздатьОбъект("Окна");
	Ширина=0;
	Высота=0;
	Окна.РазмерОкна(,Ширина,Высота,,1);
	//если последний параметр *НЕ* равен 0, то окно MDI
	Окна.РазмерОкна( Форма, Ширина, Высота);
	Окна.ПоложениеОкна( Форма, 0, 0 );
КонецПроцедуры 



  
Наверх
GTalkICQ  
IP записан
 
Melifaro
Junior Member
**
Отсутствует


in beer we trust!

Сообщений: 58
Местоположение: г. Ижевск
Зарегистрирован: 05. Февраля 2008
Пол: Мужской
Re: Распахнуть форму, без максимизации формы
Ответ #8 - 06. Февраля 2008 :: 09:12
Печать  
а можно ли тоже самое для Таблицы сработавшего отчета?
и действуют ли для них СтильОкна(), ПоложениеОка()? и если да - то подскажите, пожалуйста, как
  

...and nothing else matters...
Наверх
wwwICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Распахнуть форму, без максимизации формы
Ответ #9 - 06. Февраля 2008 :: 10:07
Печать  
Melifaro писал(а) 06. Февраля 2008 :: 09:12:
а можно ли тоже самое для Таблицы сработавшего отчета?
и действуют ли для них СтильОкна(), ПоложениеОка()? и если да - то подскажите, пожалуйста, как


Используй ВК TableDoc создай обработку с кнопкой на форме и передавай в оброаботку сформированный объект таблица а он ее просто отобразит на экране. А поскольку у тебя будет обычная форма делай с ней што хоьш, хоть в трубочку сворачивай  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Melifaro
Junior Member
**
Отсутствует


in beer we trust!

Сообщений: 58
Местоположение: г. Ижевск
Зарегистрирован: 05. Февраля 2008
Пол: Мужской
Re: Распахнуть форму, без максимизации формы
Ответ #10 - 06. Февраля 2008 :: 12:04
Печать  
вай. не хочется еще одну ВК добавлять Печаль т.е. ФормЭкс не поможет?
  

...and nothing else matters...
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать