Контакты Поиск
25.07.2022 12:23
FinSoft
 
Продублирую сюда пост с нашего профессионального форума. Некоторые моменты, наверно, не очень понятны будут со стороны. В целом же речь о том, что во фреймворке Купца появился новый важный механизм скрытия в окнах лишних контролов, дополняющий параметрическую настройку программы. Сделано с целью упрощения работы с программой некоторой категории пользователей.

Интересная идея пришла на днях. Речь про скрытие лишней информации в окнах. Когда появляется потенциальный клиент, ему для ознакомления обычно делается настройка программы, приближенная к его потребностям, чтобы у него не возникало когнитивного диссонанса от избыточного функционала. Делается это достаточно быстро с помощью параметрических настроек. Но далеко не все, что хотелось бы скрыть, можно решить таким путем. Когда-то ребята, популяризировавшие Аксапту, писали о возможности скрывать контролы в окне как о продвинутом механизме, упрощающем внедрение. Тогда я подумал, технология у них другая, если буду давать просто скрывать, то возникнет конфликт с параметрическими настройками и системой распределения прав доступа. И только на днях сложилось. Кажется все просто, когда знаешь как, почему раньше в голову не пришло. Смысл в том, чтобы не просто дать возможность скрывать любые контролы, а создать окно возможностей. Это известная технология, которую можно применить и в данном случае. Фактически делаем контрол шаблон, в котором задаем список контролов окна, которые можно скрыть, и действия, которые для этого надо применить. Соблюдая некоторую аккуратность, избегаем конфликтов с параметрическими настройками программы и системой распределения прав доступа. Получаем дополнительный механизм, который по мере потребностей можно расширять в разных окнах приложения. Для реализации потребовалось в свой класс управления окном добавить структуру и несколько свойств и методов. Пара процедур для интеграции с базой данных и, собственно, контрол шаблон.

<Первый скриншот.>

Контрол шаблон это кнопка с привязанной к ней комбинацией клавиш для запуска. В Action шаблона задается список контролов, которые можем скрывать через настройку в программе.
Три варианта скрытия Окно, Меню, Запрос. Вариант Окно просто приводит к скрытию указанного контрола. Есть некоторые нюансы. В частности, если хотим скрывать entry поле, то достаточно указать только его, промпт программа сможет определить и скрыть автоматически. Вариант Меню позволяет скрывать пункты в popup меню, которые могут быть привязаны к кнопке типа Печать, Обработка или к контекстному меню списка. У меня обычно пункты меню ссылаются на захайденные кнопки, чтобы отключить, используется соглашение о переименовании кнопок в "...". Такое переименование и будет происходить, если указать вариант Меню. Вариант Запрос напрямую ничего не делает с контролами, но позволяет вызывать метод проверки установки в разных местах кода и скрывать сразу блоки контролов. Например, для ввода ссылки на какой-то элемент справочника у меня обычно используется специальный контрол шаблон, состоящий из 5 обычных контролов. В Action у него есть строка с условием скрытия, сразу позволяющая скрыть все входящие в его состав обычные контролы. Правило такое, что скрывать можно такие контролы только тогда, когда не выбрана ссылка. Таким образом, мы можем вывести в настройку основной его контрол и вариант Запрос, а в Action контрол шаблона выбора ссылки прописать проверки наличия ссылки и включения настройки.
В строке Обработка можно прописать какой-то код, который выполнится сразу после того, как скроем нужные контролы. Например, применяем настройку для параметров отчета и хотим скрыть какие-то из них. Чтобы они не влияли на построение отчетов, очищаем их значения, устраняя потенциальные вопросы по итогам отчета.

<Второй скриншот>

Академический пример скрытия реквизита "Формат обмена", который является entry полем. Отмечаем его в настройке и жмем Записать, сохраняя настройку в базе данных. Настройка сохраняется отдельно для каждой роли. Результат на скриншоте ниже. Контрол не будет показываться до тех пор, пока не изменится настройка.

<Третий скриншот>

В качестве дополнительного сервиса в окне настройки кнопка временного отключения применения настройки, по типу, как в дизайнере окон в среде с11 можно включать и отключать показ захайденных контролов. Отметить и снять отметку со всех, выгрузить настройку в файл и загрузить настройку из файла. В списке ролей пользователей можно выгрузить и загрузить настройки всех окон для роли.
При подобном подходе образуются пустые места в окне. Я думаю, это разумный компромисс. Окна одинаковые, пустое место обозначает наличие дополнительного функционала, настраивается быстро. Если подвешивать оконный дизайнер с возможностью изменения позиции контролов, то это может привести к конфликту с параметрическими настройками, сложнее настраивать и поддерживать. То есть уже несколько другая архитектура.
Миниатюры
Нажмите на изображение для увеличения
Название: windhide1.jpg
Просмотров: 7
Размер:	369.3 Кб
ID:	11838   Нажмите на изображение для увеличения
Название: windhide2.jpg
Просмотров: 7
Размер:	395.3 Кб
ID:	11839   Нажмите на изображение для увеличения
Название: windhide3.jpg
Просмотров: 7
Размер:	401.9 Кб
ID:	11840  
28.07.2022 07:05
FinSoft
 
По мотивам недавнего обсуждения решил подключить режим black mode, позволяющий работать с окнами в затененном режиме. При этом хотелось обойтись штатными средствами системы разработки. К сожалению, ее рантайм не позволяет добраться до некоторых установок. Например, хотелось бы немного затенить заголовки списков, check и option контролы. Ползунки у списков пришлось отключить, так как слишком контрастировали с затененным фоном в окнах. Не очень выразительно, на мои ощущения, выглядят задизейбленные (недоступные) контролы. Если используется цветовое выделение колонок в списках, то на темном фоне иногда эти цвета не сочетаются, их приходится динамически корректировать. Black mode реализуется подбором цветов, обои на окна не применяются (раньше я пробовал варианты обоев). Цвета заложены жестко в функции стилизации, которая вызывается автоматически после открытия каждого окна, внешнюю настройку пока не вижу смысла вводить. Несмотря на некоторые нюансы, режим black mode выглядит интересным. На скриншоте показан пример окон.
Миниатюры
Нажмите на изображение для увеличения
Название: blackmode.jpg
Просмотров: 13
Размер:	251.3 Кб
ID:	11844  
08.08.2022 13:06
FinSoft
 
Провел опрос некоторых пользователей, которые полный день сидят в программе, на предмет использования "Темной темы". Все сказали, что привыкли к классике, не видят смысла переключать. У себя во всех подключениях я перешел на темную тему. Мне лично нравится.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.