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



         

Производные классы


TGadget предусматривает ряд функций protected, которые вы

можете использовать для создания производных классов, а также пару виртуальных функция для инициализации и очистки реквизита Inserted и Remove. Inserted вызывается после включения реквизита в оно реквизитов, a Removed вызывается перед удалением реквизита

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

Функция PaintBorder рисует границу реквизита. Она реализует

стандартные стили границы. Для создания нового стиля нужно переопределить эту функцию. Для использования стандартных стилей нужно также вызывать версию TGadget этой функции.

Функция Paint аналогична функции Paint TWindow. Paint описывается как virtual. Функция PaintGadgets в TGadget при изображении окна реквизита вызывает функцию Paint каждого реквизита. Заданная по умолчанию функция Paint только вызывает функцию PaintBorder. Вам нужно переопределить эту функцию.

При самостоятельном изображении реквизита с помощью функции

Paint часто требуется найти область внутри границ и полей реквизита. Эта область называется внутренним прямоугольником. Его можно определить с помощью функции GetInnerRect, которая помещает в

передаваемую ей структуру TRect координаты внутреннего прямоугольника.

Как и окно, реквизит можно сделать недопустимым (в этом случае он требуется повторного отображения). Для этого предусмотрены

две функции - Invalidate и InvalidateRect, аналогичные соответствующим функциям TWindow. Invalidate работает как соответствующая

функция API Windows, но не требуется параметра HWND. Родственной

функцией является функция Update, которая пытается обновить реквизит. Она аналогичная функции API Windows UpdateWindow.

Вы можете отслеживать события "мыши", происходящие внутри и

вне реквизита. Это делается с помощью псевдообработчиков событий

класса TGadget. Эти функции во многом аналогичны стандартным

функциям обработки событий ObjectWindows, но имена функций не

имеют префикса ev.

Так как реквизит на самом деле не является окном, он не имеет таблиц реакции, как другие классы ObjectWindows. Вся связь




Содержание  Назад  Вперед