Класс TGadget
Все реквизиты основываются на классе TGadget. Класс TGadget
содержит базовые функции, необходимые для всех реквизитов, включая управление обрамлением реквизита и его стилем, установку размера реквизита, его разрешение и запрещение и т.д.
В параметрах конструктора реквизита указывает номер его
идентификатора (произвольное значение) и стиль (None, Plain, Raised, Recessed или Embossed). Деструктор TGadget описывается как
virtual и удаляет реквизит из окна реквизита.
Для получения идентификатора вы можете идентифицировать реквизит с помощью функции GetId, которая не имеет параметров и
возвращает целочисленный идентификатор. Идентификатор реквизита
имеет несколько областей применения:
реквизита. При большом числе реквизитов в окне реквизитов
легче всего определить используемый реквизит с помощью
идентификатора.
строку или строку сообщения, то можно установить идентификатор в идентификатор строки.
Вы можете проверять и изменять ширину полей, обрамления и
стиль обрамления реквизита. Для этого используются функции SetBorder, GetBorders, SetMargins, GetMargins, SetBorderStyle, GetBorderStyle.
Границей является внешнее обрамление реквизита. Используемая
совместно с функциями SetBorders и GetBorders структура TBorder
имеет 4 элемента данных (Left, Right, Top и Bottom), содержащие
ширину соответствующей границы реквизита.
Полями называется область между обрамлением реквизита и
внутренним прямоугольником реквизита. С функциями SetMargins и
GetMargins используется структура TMargins с 4 элементами данных:
Top, Bottom, Right и Left.
Ограничивающий прямоугольник реквизита - это область, занимаемая реквизитом. Она содержится в структуре TRect и состоит из
относительных координат X и Y верхнего левого и нижнего правого
углов реквизита в окне реквизита. Окно реквизита использует ограничивающий прямоугольник реквизита для его размещения. Он имеет
также важное значение для определения нажатия кнопки "мыши" на
реквизите. Для нахождения и задания ограничивающего прямоугольника реквизита используются функции SetBounds (которая для отслеживания изменения и обновления внутреннего состояния реквизита в
производном классе должна переопределяться) и GetBounds.
Функция SetShrinkWrap позволяет автоматически настраивать
размер реквизита в зависимости от размеров окна. Это избавляет
вас от необходимости вычислять размер ограничивающего прямоугольника реквизита вручную. Автоматическую настройку горизонтального
и вертикального размера определяют параметры shrinkWrapWidth и
shrinkWrapHeight.
Размером реквизита является размер его ограничивающего прямоугольника. С помощью функции SetSize вы можете настроить размер
реквизита, не изменяя его положение. Для получения размера реквизита используется функция GetDesiredSize. В процессе разметки
окна реквизитов могут изменять желаемый размер реквизита.
Для улучшения интерфейса с пользователем вы можете реализовать функцию SysColorChange. Окно реквизита вызывает функцию SysColorChange каждого содержащегося в окне реквизита, когда окно
получает сообщение WM_SYSCOLORCHANGE. Заданная по умолчанию версия SysColorChange никаких действий не выполняет. Если вы хотите,
чтобы на реквизите отражались изменения системных цветов, нужно
реализовать эту функцию. При этом убедитесь в том, что вы удаляете и перераспределяете все ресурсы, зависящие от установок системных цветов.
Общедоступные элементы данных TGadget Clip и WideAsPossible
указывают, должен ли перед изображением реквизита примеряться отсекающий прямоугольник, и нужно расширять реквизит до заполнения
в окне всего доступного пространства.
С помощью функций SetEnabled и GetEnabled вы можете разрешить и запретить реквизит. Запрещенный реквизит не стирается. В
производном классе вы можете переопределить это поведение.
Функцию CommandEnable можно переопределить в производном
классе для разрешения команд. Заданная по умолчанию версия никаких действий не выполняет.