Советы и приемы

Внешний вид диалогов и элементов управления

Многие элементы управления поддерживают цвета фона и переднего плана. Установка цвета фона -24 (Прозрачный) приведет к тому, что элемент управления станет прозрачным. Установкацвета переднего плана в некоторых случаях зависит от свойства ' Использовать визуальный стиль'. Когда элементы управления используют визуальный стиль, он может переопределить цвет переднего плана. Если требуется конкретный цвет элемента, лучше отключить использование визуального стиля. Обратите внимание, что визуальные стили доступны только в Windows XP и более поздних версиях, и только если они включены в настройках Windows.

Графические кнопки и элементы управления с картинками могут нарисовать изображения с прозрачными областями из пикселей со значением цвета RGB 192, 192, 192. Любые пиксели с этим цветом будут прозрачными.

Настройка шрифта элементов управления включает в себя обычные настройки шрифта, размера и стиля, однако в OpenDCL есть дополнительный свойство, которое определяет то, как размер шрифта рассчитывается во время выполнения. Значение по умолчанию этого свойства - "Размер шрифта в пикселях". Использование же свойства "Размер шрифта от размера монитора" вызывает увеличение или уменьшение шрифта в зависимости от размера дисплея. Данный алгоритм должен использоваться с осторожностью, так как это может привести к слишком маленьким или слишком большим размерам текста в элементах управления.

Изменение свойств во время выполнения

Изменение свойств элемента или формы во время выполнения - это очень мощная возможность, которая позволяет приложениям OpenDCL буквально изменять свой пользовательский интерфейс динамически во время их выполнения. Элементы управления могут быть включены и отключены, или скрыты и показаны, в зависимости от изменений их состояния. Эта возможность позволяет даже совершенно разным элементам управления занимать одно и то же место на форме, что позволяет с помощью кода показывать и скрывать их так, чтобы только один или другой был виден в данный момент времени.

Большинство свойств форм и элементов управления хранятся в данных проекта. Такие свойства сохраняются между вызовами одной и той же формы. Это важно помнить, потому что в некоторых случаях состояние предыдущего диалога необходимо сбрасывать между вызовами. Чтобы сбросить состояние диалога, данные проекта могут быть перезагружены из файла проекта или быть сброшены непосредственно к исходным значениям. Например, код, который заполняет поле со списком при OnInitialize должен учитывать возможность, что список уже был инициализирован либо сначала проверять его, или просто очищать его каждый раз перед заполнением.

В некоторых случаях, может быть полезно написать код AutoLISP для автоматизации ряда изменений в существующем OpenDCL проекте, а затем сохранить изменения обратно в файл. Например, следующий код открывает проект OpenDCL, перебирает каждый элемент управления в каждой форме и устанавливает метод масштабирования шрифта для каждого из них (масштабирование шрифта контролируется свойством 'FontSize'), затем сохраняет проекта с измененными данными  в новый файл.

(defun SetOdclFontSizeUnscaled (odclfile password newodclpath / project props fontsize)
(setq project (dcl-Project-Load odclfile))
(if (not project) (exit))
(foreach
form (dcl-Project-GetForms project)
(foreach
control (dcl-Form-GetControls form)
(progn (setq props (dcl-Control-GetProperties control))
(if (member "FontSize" props)
(progn (setq fontsize (dcl-Control-GetProperty control "FontSize"))
(if (> fontsize 0)
(dcl-Control-SetProperty control "FontSize" (- 0 fontsize))))))))
(dcl-Project-SaveAs project newodclpath password)
)