Альтернативный дизайнер окон

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Альтернативный дизайнер окон

Сообщение finsoftrz »

Понемногу ковыряю эту тему. Вначале из любопытства, а потом и бросить жалко. :-)
Как писал ранее, идея в том, чтобы взять окно из среды клариона, поработать с ним у себя в программе, потом вставить с изменениями обратно. Могут быть и другие варианты использования, иметь такую библиотеку в арсенале неплохо.
Задачка оказалась более муторной, чем вначале предполагал, так как помимо парсера и генератора window структуры потребовались еще парсеры/генераторы для list формата и основных масок вывода информации. Тем не менее, некая движуха происходит. Записал ролик, но что-то писалка в mp4 взбрыкнула. Может позже приложу ссылку. Поэтому пока несколько скриншотов.

windes1.jpg

Это сгенеренная на основании работы в дизайнере window структура.

windes2.jpg

Это окно предпросмотра.

windes3.jpg

Это форматер list контрола.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Альтернативный дизайнер окон

Сообщение finsoftrz »

Дополнительно, это же окно, открытое в среде c11.

windes4.jpg
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Альтернативный дизайнер окон

Сообщение ingasoftplus »

:ty:
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Альтернативный дизайнер окон

Сообщение Игорь Столяров »

finsoftrz писал(а): 03 Ноябрь 2022, 20:07 помимо парсера и генератора window структуры потребовались еще парсеры/генераторы для list формата
А не замахнуться ли с такими парсерами на свой конструктор окон и интерпретатор интерфейса ?
smile19.gif
smile19.gif (1.37 КБ) 2224 просмотра
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Альтернативный дизайнер окон

Сообщение ingasoftplus »

возможно, будет полезен List-Format-Parser https://github.com/CarlTBarnes/List-Format-Parser
Аватара пользователя
ingasoftplus
Ветеран
Сообщения: 425
Зарегистрирован: 26 Декабрь 2006, 17:07
Откуда: Оттуда :)
Благодарил (а): 87 раз
Поблагодарили: 5 раз

Альтернативный дизайнер окон

Сообщение ingasoftplus »

Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Альтернативный дизайнер окон

Сообщение finsoftrz »

Он и есть конструктор окон. Специфика в том, что результат хранится в стандартной Window структуре, поэтому можно взять готовое окно из среды, а можно сделать все (кроме контрол шаблонов) и использовать в приложении или вставить в среду для дальнейшей работы. В принципе, можно было бы пойти по пути мастер-процедур, по аналогии с дизайнером печатных форм, оставив дизайн окон в рантайм, а обрабатывающий код внутри приложения. Можно пойти дальше и делать полностью скриптовую систему.
Но работающие приложения все же у нас используют другую архитектуру. Поэтому основной профит я вижу в возможности использования альтернативного дизайнера параллельно со штатным. Альтернативный похож на с6, туда можно навесить различные инструменты, ускоряющие разработку. Плюс нет пересчёта единиц измерения из net в win32 и можно меньше париться с глюками в штатном дизайнере. Альтернативный дизайнер это 100% код на кларионе - базовый класс и несколько оконных процедур (дизайнер, установка свойств контролов, установка свойств окна, дерево контролов, форматер LIST, форматер picture, просмотр clipboard, превьювер). Некоторые настройки в отдельном ini файлике, например, список каталогов с пиктограммками.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Альтернативный дизайнер окон

Сообщение finsoftrz »

ingasoftplus писал(а): 04 Ноябрь 2022, 12:26 возможно, будет полезен List-Format-Parser https://github.com/CarlTBarnes/List-Format-Parser
Я знаю про этот инструмент. Насколько я понял, идея там вызвать диалог форматирования LIST из работающего приложения, а потом скопипастить строку формата в ide.
В альтернативном дизайнере задумка "вернуть" в процесс разработки инструмент а-ля с6, дополнив его некоторыми удачными идеями из с11. По моему опыту работы в с11 большая доля проблем в среде крутится вокруг дизайнера окон.
В принципе, я думал про то, что в класс можно добавить метод загрузки описания окна работающего приложения, это гораздо проще, чем парить структуру Window. Но какая от этого польза в дальнейшем, не представляю.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Альтернативный дизайнер окон

Сообщение finsoftrz »

Пришла такая мысль, как можно использовать дизайнер. Включить его непосредственно в учётную систему для быстрого прототипирования диалоговых окон совместно с пользователем. Пользователи любят участвовать в процессе, совместное обсуждение каких-то новых возможностей или изменений в прикладном функционале с визуализацией на прототипе может зайти, а также ускорить процесс согласования. Плюс это определённый маркетинговый ход, что у нас не просто программа, а технология.
Вызов дизайнера в приложении можно было бы сделать двумя способами. Первый это навестить в шаблонах на горячую клавишу в имеющихся оконных диалогах. Поскольку используется язык шаблонов, то для дальнейшего использования есть возможность передать метки use и #seq. Второй вариант включить в сервисное меню, после открытия выбрать заготовку из библиотеки (поскольку результаты сохраняются в виде обычной Window структуры, достаточно просто такую библиотеку пополнять).
После обсуждения и прототипирования совместно с клиентом (сейчас все технические манипуляции происходят с удаленным доступом) копипастим полученную структуру через буфер обмена в среду клариона целиком или частично. Здесь могут быть нюансы, в зависимости от того, что мы прототипировали. Игра идёт вокруг seq контрол шаблонов и use меток контролов.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Альтернативный дизайнер окон

Сообщение Игорь Столяров »

finsoftrz писал(а): 11 Ноябрь 2022, 9:11 диалоговых окон совместно с пользователем
Как далеко у Вас демократические процессы-то зашли. Аж страшно ! :shock:
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
Admin
Администратор
Сообщения: 3959
Зарегистрирован: 05 Июль 2005, 15:59
Откуда: Хабаровск
Благодарил (а): 25 раз
Поблагодарили: 22 раза
Контактная информация:

Альтернативный дизайнер окон

Сообщение Admin »

Игорь Столяров писал(а): 11 Ноябрь 2022, 10:08 демократические процессы
Плюсану. Баловство это. Должен решать программист! :twisted:
Рай совершает ошибки ничуть не реже чем ад. Просто у него хорошая пресса
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Альтернативный дизайнер окон

Сообщение finsoftrz »

Речь об ускорении согласования и вовлечении активных пользователей в процесс. Ясно, что конечное решение они не принимают. Окна в пестрый "современный" дизайн разукрашивать тоже баловство по большому счету.
Я просто пытаюсь найти смысл в использовании дизайнера окон за пределами среды. Это трудно. :-)
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
Игорь Столяров
Ветеран движения
Сообщения: 7322
Зарегистрирован: 07 Июль 2005, 10:19
Откуда: г. Ростов-на-ДоМу
Благодарил (а): 13 раз
Поблагодарили: 48 раз

Альтернативный дизайнер окон

Сообщение Игорь Столяров »

finsoftrz писал(а): 11 Ноябрь 2022, 10:29 найти смысл в использовании дизайнера окон
Как по мне: прикрутить к конструктору - интерпретатор (Вы же сделали такой для REPORT).
За теми кто отстал - не возвращаться. (С) Кодекс
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Альтернативный дизайнер окон

Сообщение finsoftrz »

Report несколько другая ситуация. В окнах интерактивная работа, вызов других окон и т.п. Делать полностью скриптовую систему наподобии 1с смысла нет. Смысл бы был для усиления имеющейся системы. Для кастомизации окон тоже как-то выглядит не очень, проще параметрическая настройка со скрытие контролов, про которую я как-то писал и которую уже использую в продакшене.
C6/C11, ШВС, tps/btrieve.
Аватара пользователя
finsoftrz
✯ Ветеран ✯
Сообщения: 4549
Зарегистрирован: 06 Ноябрь 2014, 12:48
Благодарил (а): 6 раз
Поблагодарили: 34 раза

Альтернативный дизайнер окон

Сообщение finsoftrz »

Еще продвинулась эта тема. Поддержка работы с группами в list formatter, диалог для конструирование pictures, окна для установки пропертей по всем типам контролов. В рисовалке подключено выделение мышкой "по области" контролов, расположенных в составе родительских (tab, group, option), выделение рядов контролов (например, для ряда кнопок щелкаем по первому и по последнему, выделяются все), перемещение контролов мышкой с фиксацией одной из координат. Часть окон из реальных проектов уже открываются в дизайнере (не все).

На следующем скриншоте list formatter и picture formatter.

wdes_5.jpg

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

wdes_6.jpg
C6/C11, ШВС, tps/btrieve.
Ответить