1с программно свернуть окно
В интерфейсе Такси мы реализовали несколько новых режимов основного окна клиентских приложений. Они позволят вам использовать максимальное пространство экрана и скрыть стандартные элементы интерфейса, которые не нужны для задачи, выполняемой приложением.
Эти режимы будут удобны в тех случаях, когда приложение запускается на специализированных устройствах, таких как кассовые аппараты, терминалы сбора данных и тому подобных. Также эти режимы будут полезны для работы в простых приложениях, состоящих из нескольких форм, и не требующих отображения стандартных панелей интерфейса и области системных команд.
Нужно сказать, что в платформе существуют некоторые возможности максимизации рабочего пространства: открытие формы в отдельном окне, скрытие активных панелей сочетанием клавиш Ctrl + Shift + ~. Но они не позволяют целиком решить задачи, возникающие в упомянутых сценариях работы. Поэтому мы решили, что нужно какое-то комплексное решение. Так и появились новые режимы основного окна.
Управление режимом
Задать режим основного окна вы можете в конфигураторе, или из встроенного языка. Но тут есть особенность. Мы предполагаем, что режим основного окна определяется самой сутью прикладного решения. Поэтому возможность изменить его программно существует только при старте прикладного решения. В дальнейшем клиентское приложение будет функционировать в том режиме, который ему установлен.
В конфигураторе для этого мы добавили новое свойство конфигурации Режим основного окна клиентского приложения, а во встроенном языке реализовали два метода: УстановитьРежимОсновногоОкна() и ПолучитьРежимОсновногоОкна(). Метод УстановитьРежимОсновногоОкна() вы можете вызывать только в обработчике события ПередНачаломРаботыСистемы.
Возможные режимы
Возможных режимов работы получилось четыре. Обычный – для работы как раньше, и три новых режима: РабочееМесто, ПолноэкранноеРабочееМесто и Киоск. Понять их отличия можно на примере начальной страницы 1С:Бухгалтерии.
Режим ПолноэкранноеРабочееМесто скрывает всё то же самое, что и режим РабочееМесто, но дополнительно к этому основное окно разворачивается на весь экран, и скрываются кнопки управления окном (Свернуть, Восстановить, Закрыть).
В режиме Киоск дополнительно ко всему перечисленному скрывается гиперссылка с именем пользователя и кнопка О программе. Этот режим мы позиционируем для «внешних» пользователей, поэтому персональная информация тут не используется и не нужна.
Примеры использования
Режим РабочееМесто вы можете использовать для простых приложений. Например, для гипотетического приложения Почтовый клиент, у которого есть всего две функции – приём и отправка почты.
Тут на начальной странице расположена одна форма. Всё лишнее скрыто. И даже скрыт заголовок формы. Такую возможность мы тоже реализовали, она управляется отдельно.
Режим ПолноэкранноеРабочееМесто вы можете использовать, например, для создания рабочего места кассира.
Для кассира важно, чтобы на экране было минимум информации, не относящейся к его функциям. При этом ему доступна гиперссылка с именем пользователя, по которой он может завершить работу в программе.
Режим Киоск удобен для простых приложений, в которых не требуется аутентификация пользователя в информационной базе. Например, это может быть платёжный терминал.
Как совсем фантастический пример, в этом режиме можно реализовать интерфейс банкомата, например.
Особенности веб-клиента
Браузеры в ряде случаев ограничивают возможности работающего внутри них программного кода, и требуют интерактивного взаимодействия с пользователем. По этой причине при использовании новых режимов работы в веб-клиенте есть две особенности, отсутствующие в тонком клиенте.
Во-первых, браузеры не позволяют веб-клиенту самостоятельно перейти в полноэкранный режим без участия пользователя. Поэтому сначала мы вынуждены показать диалог.
И только по нажатию кнопки в этом диалоге (по действию пользователя) происходит переход в полноэкранный режим.
Во-вторых, браузеры перехватывают нажатие клавиши Esc и пытаются выйти из полноэкранного режима. Здесь мы исходим из того, что если разработчик установил полноэкранный режим работы, то именно в таком режиме работа и должна продолжаться. Поэтому на нажатие клавиши Esc мы показываем диалог, который возвращает пользователя в полноэкранный режим.
Скрытие заголовка формы
Применение того или иного режима основного окна приводит к изменению сразу многих элементов интерфейса. Однако вам может потребоваться более тонкое управление некоторыми из них, например заголовком формы или кнопкой закрытия окна. Для этих элементов мы реализовали дополнительное отдельное управление.
Скрывать или показывать заголовок управляемой формы вы можете теперь с помощью свойства формы ОтображатьЗаголовок. Если установлен Обычный режим основного окна, то это свойство действует только на формы, расположенные на начальной странице. В других режимах это свойство действует на все управляемые формы.
Например, в режиме Обычный начальная страница с двумя формами, у которых заголовки включены или выключены, будет выглядеть следующим образом.
А вот в случае, когда на начальной странице находится только одна форма, мы изменили стандартное поведение платформы. Теперь стандартно, при включенном заголовке формы, заголовок формы отображается вместо надписи Начальная страница.
А при выключенном заголовке формы снова появляется надпись Начальная страница.
Скрытие кнопки закрытия окна приложения
Ещё одно новое свойство управляемой формы, ОтображатьКнопкуЗакрытия, позволяет вам скрыть кнопку закрытия формы и одновременно отключить стандартные действия, выполняемые по клавише Esc. Оно работает только в новых режимах открытия основного окна РабочееМесто, ПолноэкранноеРабочееМесто или Киоск.
С помощью этого свойства вы можете создавать формы, которые пользователь не сможет закрыть стандартными способами. Предполагается, что для таких форм вы определите иной способ закрытия.
Как свернуть все активные окна (все открытые формы документов, журналов, обработок и.т.д) Помните добрый Windows внизу у кнопки пуска замечательная кнопка "Свернуть все окна" Кажется есть стандартное меню Окна - но там только Закрыть, Закрыть все. , а вот свернуть нет В данной обработке не используются внешние компоненты, скрипты и.т.д :-) Легко встраивается в любую конфигурацию.
Как свернуть все активные окна (все открытые формы документов, журналов, обработок и т.д)
Часто задают данный вопрос "Как программно свернуть окна открытых форм ?"
видел много предложений и вариантов (но думаю это самое простое, может для кого то и баян, а кому-то пригодиться)
Помните добрый Windows внизу у кнопки пуска замечательная кнопка "Свернуть все окна"
Кажется есть стандартное меню Окна - но там только Закрыть, Закрыть все. , а вот Свернуть нет
Попросили сделать такую же :-)
Пример : открыто много окон
А в привычном левом нижнем углу иконка "Свернуть окна" нажимаем
и получаем результат. Быстро
Все гениальное - просто.
В данной обработке не используются внешние компоненты, скрипты и т.д :-)
А как бы вы сделали ?
Специальные предложения
Из 1С
Процедура КнопкаВыполнитьНажатие(Кнопка)
Shell = Новый COMОбъект("Shell.Application");
Shell.MinimizeAll ();
КонецПроцедуры
(предложил le_ - здесь
но тема совершенно не об этом :-)
(5) Для Оси - не принимается, на дух не переношу ХРшную "Свернуть все окна".
Хочу, чтобы в 1С было как в Win 7 - в правом нижнем и маленький квадратик
У меня получается только так:
(7)(8) Спасибо за комментарии
(8) у меня знакомые 6 из 10 тоже искали встроенную ВК или думали что поставка без кода.
(10) да ладно . не может быть.
посмотри внимательно название темы
"Свернуть" окна <> Свернуть окна
когда тетеньку в цирке распиливают пополам - фокусник тоже немного лукавит.
Но от этого результат не страдает :-)
(11) как всегда .
. ловкость рук и и не какой *** . пордод . никакого обману!
а я было полез в мануал,
смотреть че там объект "ОкнаКлиентскогоПриложения"
позволяет делать.
:))))
HAPPY FIRST APRIL DAY, COLLEAGUES.
Минуты 3 втыкал как оно работает! Надеялся увидеть незнакомые метода работы с формами или получение списка открытых окон. А тут ни одной строчки кода. Нестандартное мышление!
Ну, конечно, не свернул все окна. Но и в цирке женщину не распиливают :). Весьма оригинально. Плюс, конечно.
Да, элементарно
Посмотри на вторую картинку к публикации ( ПКМ )
по темно серому фону правой кнопкой мыши
Интересно, можно ли получить такой эффект при управляемых формах? И что делать, если у конфы на фон "подложена" какая-нибудь картинка, уже именно средствами всяких dll? :)
На самом деле у такого метода есть неприятный эффект (пишу по мотивам жалоб пользователей на обработку-"рабочий стол") - допустим есть у тебя открытых несколько окон. Активизируешь обработку (переходишь на "рабочий стол" в моем случае, или "сворачиваешь" в твоем), потом активизируешь нужное окно, которое НЕ распахнуто на весь экран. На заднем фоне остается окно обработки - и при щелчке мышью мимо нужного юзверю окна (т.е. по мысле юзверя - "по фону") - получаем сокрытие этого самого нужного окна (при щелчке по реальному фону - такого не происходит)!
Щелчок мимо окна может быть не только случайным, но и намеренным - к примеру для активизации окна 1С если юзверь параллельно работает в нескольких прогах (мониторы нынче широкие, позволяют комфортно два окна рядом расположить). При этом юзверь может принципиально хотеть щелкнуть мимо нужного окна - например, у него там отчет и некая значимая ячейка активизирована, чтоб глаз на нее сразу падал, и сбивать активизацию он не желает.
К сожалению, такое не обработаешь, единственное - объяснять/приучать юзверей щелкать не по фону, а по заголовку или панели окон. На что отдельные экземпляры возмущаются ;) .
Как свернуть все активные окна (все открытые формы документов, журналов, обработок и.т.д) Помните добрый Windows внизу у кнопки пуска замечательная кнопка "Свернуть все окна" Кажется есть стандартное меню Окна - но там только Закрыть, Закрыть все. , а вот свернуть нет В данной обработке не используются внешние компоненты, скрипты и.т.д :-) Легко встраивается в любую конфигурацию.
Как свернуть все активные окна (все открытые формы документов, журналов, обработок и т.д)
Часто задают данный вопрос "Как программно свернуть окна открытых форм ?"
видел много предложений и вариантов (но думаю это самое простое, может для кого то и баян, а кому-то пригодиться)
Помните добрый Windows внизу у кнопки пуска замечательная кнопка "Свернуть все окна"
Кажется есть стандартное меню Окна - но там только Закрыть, Закрыть все. , а вот Свернуть нет
Попросили сделать такую же :-)
Пример : открыто много окон
А в привычном левом нижнем углу иконка "Свернуть окна" нажимаем
и получаем результат. Быстро
Все гениальное - просто.
В данной обработке не используются внешние компоненты, скрипты и т.д :-)
А как бы вы сделали ?
Специальные предложения
Из 1С
Процедура КнопкаВыполнитьНажатие(Кнопка)
Shell = Новый COMОбъект("Shell.Application");
Shell.MinimizeAll ();
КонецПроцедуры
(предложил le_ - здесь
но тема совершенно не об этом :-)
(5) Для Оси - не принимается, на дух не переношу ХРшную "Свернуть все окна".
Хочу, чтобы в 1С было как в Win 7 - в правом нижнем и маленький квадратик
У меня получается только так:
(7)(8) Спасибо за комментарии
(8) у меня знакомые 6 из 10 тоже искали встроенную ВК или думали что поставка без кода.
(10) да ладно . не может быть.
посмотри внимательно название темы
"Свернуть" окна <> Свернуть окна
когда тетеньку в цирке распиливают пополам - фокусник тоже немного лукавит.
Но от этого результат не страдает :-)
(11) как всегда .
. ловкость рук и и не какой *** . пордод . никакого обману!
а я было полез в мануал,
смотреть че там объект "ОкнаКлиентскогоПриложения"
позволяет делать.
:))))
HAPPY FIRST APRIL DAY, COLLEAGUES.
Минуты 3 втыкал как оно работает! Надеялся увидеть незнакомые метода работы с формами или получение списка открытых окон. А тут ни одной строчки кода. Нестандартное мышление!
Ну, конечно, не свернул все окна. Но и в цирке женщину не распиливают :). Весьма оригинально. Плюс, конечно.
Да, элементарно
Посмотри на вторую картинку к публикации ( ПКМ )
по темно серому фону правой кнопкой мыши
Интересно, можно ли получить такой эффект при управляемых формах? И что делать, если у конфы на фон "подложена" какая-нибудь картинка, уже именно средствами всяких dll? :)
На самом деле у такого метода есть неприятный эффект (пишу по мотивам жалоб пользователей на обработку-"рабочий стол") - допустим есть у тебя открытых несколько окон. Активизируешь обработку (переходишь на "рабочий стол" в моем случае, или "сворачиваешь" в твоем), потом активизируешь нужное окно, которое НЕ распахнуто на весь экран. На заднем фоне остается окно обработки - и при щелчке мышью мимо нужного юзверю окна (т.е. по мысле юзверя - "по фону") - получаем сокрытие этого самого нужного окна (при щелчке по реальному фону - такого не происходит)!
Щелчок мимо окна может быть не только случайным, но и намеренным - к примеру для активизации окна 1С если юзверь параллельно работает в нескольких прогах (мониторы нынче широкие, позволяют комфортно два окна рядом расположить). При этом юзверь может принципиально хотеть щелкнуть мимо нужного окна - например, у него там отчет и некая значимая ячейка активизирована, чтоб глаз на нее сразу падал, и сбивать активизацию он не желает.
К сожалению, такое не обработаешь, единственное - объяснять/приучать юзверей щелкать не по фону, а по заголовку или панели окон. На что отдельные экземпляры возмущаются ;) .
Управляемые формы. Новая разработка 1С призванная облегчить труд разработчика, дать ему больше времени на написание кода за счет упрощения проектирования интерфейса. На деле часто получается, что т. н. «управляемые формы» являются совершенно неуправляемыми. УФ не умеют таких банальных вещей как сворачивание/разворачивание окна, не говоря уже о его позиционировании на экране и задании размера в пикселях. Возможно эти функции посчитали невостребованными и не стали включать в новый интерфейс, но практика показывает, что их порою очень сильно не хватает. Некоторое время проблема частично решалась за счет WSH, но хотелось чего-то большего. Так была реализована внешняя компонента для того что бы сделать «управляемые формы» чуть более управляемыми.
Что? Где? Когда?
Данная ВК представляет собой библиотеку функций для управления состоянием и положением окон. Так же в библиотеке есть несколько полезных системных функций.
Управление состоянием окна:
Развернуть ( ЗаголовокОкна ) — разворачивает окно на полный экран
Свернуть ( ЗаголовокОкна ) — сворачивает окно в панель задач
Скрыть ( ЗаголовокОкна ) — скрывает окно(при этом код формы продолжает исполняться)
Показать () - показывает последнее скрытое функцией Скрыть() окно
СвернутьВОкно ( ЗаголовокОкна ) — в осстанавливает исходное состояние окна
ИСТИНА Видимость ( ЗаголовокОкна ) — п роверяет видимо ли окно на экране
ИСТИНА Развернуто ( ЗаголовокОкна ) — проверяет развернуто ли окно на полный экран
ИСТИНА Свернуто ( ЗаголовокОкна ) — проверяет свернуто ли окно в панель задач
УстановитьПрозрачность ( ЗаголовокОкна , Коэффициент ) — устанавливает прозрачность окна. Степень прозрачности задается через коэффициент (0-255).
Управление положением окна:
ПолучитьПозицию ( ЗаголовокОкна , X , Y ) – получает координаты левого верхнего угла окна относительно экрана. Координаты возвращаются через параметры X,Y.
Переместить ( ЗаголовокОкна , X , Y ) – перемещает окно на заданную позицию XY. В данном случае XY являются координатами левого верхнего угла окна.
ПолучитьРазмеры ( ЗаголовокОкна , Ширина , Высота ) – получает размеры окна в пикселях. Значения возвращаются через соответствующие параметры.
УстановитьРазмеры ( ЗаголовокОкна , Ширина , Высота ) – устанавливает размеры окна в пикселях.
ПолучитьТекущееРазрешение ( Horz , Vert ) – получает текущее разрешение экрана. Значения возвращаются через соответствующие параметры.
ПолучитьСписокРазрешений () – получает список доступных в системе разрешений экрана. Данные возвращаются в виде «РАЗРЕШЕНИЕ1,РАЗРЕШЕНИЕ2,РАЗРЕШЕНИЕ3. ». В демонстрационной обработке есть пример формирования списка разрешений на форме.
УстановитьРазрешение ( ВыбранноеРазрешениеЭкрана ) – устанавливает разрешение экрана. В качестве параметра указывается порядковый номер разрешения. В демонстрационной обработке показан пример установки разрешения из ранее сформированного списка.
Спать ( ВремяСна ) – реализация классической функции sleep(). ВремяСна указывается в миллисекундах.
Сигнал ( Частота , Длительность ) – реализация классической функции beep(). Позволяет задать частоту и длительность звука.
Итого
Библиотека писалась для собственных нужд и возможно будет дорабатываться еще по мере необходимости. Если у кого-то возникнет светлая мысль по расширению ее функционала в рамках той предметной области для которой она задумывалась, то пишите пожелания. Если идеи окажутся стоящими, они будут реализованы.
В комплект поставки входят: База с подключенной ВК в виде общего макета и демонстрационной обработкой. ВК в zip архиве.
Как свернуть все активные окна (все открытые формы документов, журналов, обработок и.т.д)? Помните добрый Windows внизу у кнопки пуска замечательная кнопка "Свернуть все окна" Кажется есть стандартное меню Окна - но там только Закрыть, Закрыть все. , а вот свернуть нет. Зачем : просто интересно решение данного вопроса. Тема - не вопрос, а обсуждение, какой способ вы предложили ?
Знаю. поэтому и выделил в теме (обычное приложение) просто на днях увидел ситуацию - одно подающее надежды дарование в каждую . форму вставлял свой код чтобы при открытии добавить в массив и потом если нужно это дело перебрать (парнишка неделю этим бредил) есть решение - более оптимальное :-)
>>в каждую . форму вставлял свой код есть более оптимальное, вставить это в общий модуль работа с диалогами, в типовых туда всегда при открытии ходит
будет сотка напишу (просто реально интересно мнение и обсуждение) если вам поставили бы такую задачу что бы вы сделали. Вот хочет босс - одним нажатием кнопки свернуть все окна не закрывая 1С
это классно . но через чур :-) окно то 1С сворачивать не нужно Это и не оспаривалось. Выложу чуть попозже. Как интерес угаснет
Я тебе уже сказал когда то что о тебе думаю. Оклиматизовался что ли ? (если читать научился, постарайся теперь понять о чем пишут и кто пишет)
Подсмотрел картинку здесь: И подумал, что можно сделать форму с галочкой "Режим рабочего стола" и запускать её при начале работы системы или что-то типа того. Правда, это не совсем сворачивание окон, т.к., если посмотреть свойство "СпособОтображенияОкна" у какой-нибудь несвернутой формы (перекрытой), то оно будет показывать Нормальное или Максимизированное.
да - молодец. По картинке это видно. А теперь о смешном: Задача не моя и клиент не мой но ТЗ звучало так : сделать кнопку что сворачивало великое множество окон Бюджет : 3000 руб. Срок : 3 дня Проект: закрыт. //через день позвонил представитель заказчика и спросил сколько вы хотите получить за ОТКРЫТЫЙ КОД - . - ну у вас же поставка без искодного кода, а интересно бы посмотреть
)))) - нет, это страшная коммерческая тайна, разглашению не подлежит - хранить вечно. Осторожнее со своими желаниями (с)
Хотя, не, так не получится, в модуле приложения это свойство формы придется устанавливать. А это уже конфигурация. Выходит, еще дороже.
Не выспался ? смотри название темы - Как программно "свернуть все" окна (кавычки тебе не о чем не говорят ?) Закрывается - правой кнопкой по экрану - появится меню - Закрыть
Ждем темы от автора, где он "удаление" файлов будет производить, рисуя белый квадрат поверх имени и выдавать это за решение
И тебе привет ! Ну что за манеры прочитать два последних поста и вставить свою непонятку ? Перезагрузись, уже утро ! где я что выдавал за решение ? Тема соверщенно не об этом ?
мне всегда был интересен неординарный подход к решению задачи а не по шаблону (как в учебнике, как в типовой)? Понятно что когда увидел готовый ответ, посмотрел как реализовано - 72% скажут да так и дурак сможет.
Я прочитал всю тему. Мои манеры давай оставим в покое. Внезапно! А о чем? при чем здесь неординарный подход? Это тупо на$6алово ГБ, которое вынесли с помпой на обозрение.
почему на$6алово ГБ же сама цену выставили, с помпой своего 20-го стажа типа я знаю сама какую цену надо ставить
тут просто риск большой, если ГБ поймёт, что облажалась, то начнёт стрематься по каждому ТЗ типа кодеры скрывают правду йоперный театр
Ну я сгустил краски, ок. Для ГБ может это и то что нужно (не вижу окон - значит их нет). Но здесь программистам предложили решить задачу. С точки зрения программиста - это не решение. Не более чем шутка.
кстати, насчёт удаления файлов винда так и делает, сшибает вхлам заголовок файла на диске а пользователь по привычке думает, что байты файла обнулены
автор, скажи, ты ГБ знаешь, мы нет ГБ, когда узнает, будет смеяться вместе с вами или покраснее, взъерошится и пойдёт искать другого подрядчика
Тема о том , что любую задачу - можно решить великим множеством вариантов. одно будет - по учебнику другое - как учили другое - что новое одно будет быстро работать, другое медленнее Обсуждать (на понтах) каждый горазд как бы ты решил поставленную задачу ? Да , именно так. То же самое что и фокус (иллюзия) вроде красиво, захватывает, а сами понимаем , что так не бывает
почему не решение. винда же тоже перериросывает окна, она же их физически не сворачивает так что автор сделал всё правильно, он просто перериросовал область
В данном случае пользователю нужно по нажатию на кнопку увидеть чистый рабочий стол и не важно, как это будет происходить, будут окна реально сворачиваются или нет. Цель, в общем-то достигнута. И достигнута с минимальными трудозатратами. Лично мне решение нравится ) Неординарностью подхода в том числе. Мне бы вот такое в голову не пришло, поставь передо мной кто-то такую задачу ) ВК наваял бы.
А я смогу сделать ВК, которая в толстом клиенте реально свернет все окна :) А в Конфигураторе со снегопатом 1.1.7.1 это уже сейчас реально сделать простым скриптом.
Несомневаюсь. Но как говорят в Одессе, это немного другие затраты по времени Проходи мимо (или сам попробуй это нажать) - нам не нужно Закрыть все окна - нам нужно их только "свернуть"
+ Вот код для Конфигуратора для сворачивания всех окон: function macrosСвернутьВсе < >Правда, даже на последней версии снегопата валит Конфигуратор, зато я нашел небольшую ошибку и в следующей версии - это будет работать.
Научись читать и понимать: нужно программно свернуть все окна внутри одного приложения 1С (твой вариант сворачивание основное окно приложения)
ОК.))) Это я для затравки. Однако в ты хвастался, что есть оптимальное решение. Заинтриговал, но так и не сообщил аудитории.
Читайте также: