24.08.2020
Создавать оконные процедуры и расставлять в них контролы очень быстро. Однако есть некоторый косметический дефект, связанный с выравниванием контролов. Всегда присутствует человеческий фактор. Даже если мы все очень аккуратно дизайним в одном окне, то в разных окнах расположение функционально однотипных контролов может несколько отличаться. Использование режима "сетка" экстенсивно, если в приложении окон и контролов достаточно много. Появилось желание как-то автоматизировать этот процесс. Вот что получилось в результате. Конечно, данная технология не исключает аккуратности в проектировании оконных диалогов, а дополняет, автоматически устраняя возможные расхождения.
1 скриншот. Автоматическое выравнивание так называемых контрол шаблонов. Начиная от простых (календарь, калькулятор, выбор файла/каталога), которые прикрепляются к какому-то полю ввода, и заканчивая сложными, состоящими из нескольких обычных контролов (выбор значения из справочника, вывод периода, списковые параметры отчетов и т.п.). У простых выравнивание происходит по полю ввода, к которому они относятся, у составных выравниваются входящие в них контролы относительно друг друга.
2 скриншот. Автоматическое выравнивание промптов. Выравниваются по полю ввода, к которому они относятся.
3 скриншот. Выравнивание границ регионов (списков, шитов, панелей) относительно границ родительского контрола или окна. Здесь может быть некоторое визуальное отклонение, связанное с отрисовкой контролов, еще проверяется. Данное выравнивание, в отличии от первых двух, требует некоторой настройки в каждом окне, где есть целесообразность его использования.
4 скриншот. Выравнивание типовых групп контролов. Для этого добавляется невидимый group контрол, относительно которого выравниваются относящиеся к нему контролы. На скриншоте показан выравненный ряд кнопок. Данное выравнивание также требует некоторой настройки в каждом окне, где есть целесообразность его использования. Таких group заготавливается по количеству типовых фрагментов диалогов. Они могут быть, например, некоторой стандартной высоты или ширины, изменение которых блокируется.