Четвертый BORLAND С++ и его окружение

Класс 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 можно переопределить в производном

    классе для разрешения команд. Заданная по умолчанию версия никаких действий не выполняет.


    Содержание раздела