Энциклопедия C++ Builder


ГРАФИЧЕСКИЕ КОМПОНЕНТЫ - часть 9


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

7.4.3 Реакция на изменения

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

Реакция на изменения объектов графической компоненты особенно важна в том случае, если эти объекты объявлены в исходном файле модуля компоненты как published. Тогда единственный способ обеспечить, чтобы вид компоненты на стадии проектирования приложения соответствовал свойствам, установленным Инспектором объектов, заключается в подключении обработчика события, который будет реагировать на изменения компонентного объекта. Для графических компонент вы должны предусмотреть реакцию на событие OnChange.

class TMyShape : public TGraphicControl

{

public:

virtual _fastcall TMyShape(TComponent* Owner);

__publi shed:

TPen *FPen;

TBrush *FBrush;

void_fastcall StyleChanged(TObject *Sender) ;

};

_fastcall TMyShape::TMyShape(TComponent* Owner)

: TGraphicControl(Owner) {

Width = 64;

Height = 64;

PPen = new TPen;

FPen->OnChange = StyleChanged; //

изменить стиль пера

FBrush = new TBrush;

FBrush->OnChange = StyleChanged; //

изменить стиль кисти }

void_fastcall TMyShape::StyleChanged(TObject *Sender) (

Invalidate();

}

Листинг 7.4. Содержание файлов Unit1.h и Unit1.cpp компоненты TMyShape.

Графическая компонента рисования геометрических фигур TShape Библиотеки Визуальных Компонент объявляет свои свойства, представляющие перо и кисть, в секции _published.

Конструктор компонентного объекта присваивает метод StyleChanged

событию OnChange, заставляя компоненту перерисовывать изображенные на ней фигуры при любом изменении пера или кисти. Хотя оригинальный текст компоненты TShape написан на языке Объектный Паскаль, Листинг 7.4 приводит его трансляцию на C++ с новым именем TMyShape.




Начало  Назад  Вперед