Курсовая работа: Построение компоненты в Builder C++
this->Canvas->Font->Size=this->Height/20; //размершрифта
this->Canvas->TextOutA(this->Width/4,3,"Моякомпонента"); //координаты
this->Invalidate(); //перерисовываемкомпоненту
}
if (NewWidth!=NewHeight) NewWidth=NewHeight;
return(NewWidth, NewHeight);
}
//---------------------------------------------------------------------------
Метод CanResize() возвращает новые значения ширины (NewWidth) и высоты (NewHeight), которые затем будут переданы методу WndProc(TMessage& Message), для того, чтобы компонента рисовалась в приложении с новыми размерами.
9 Создание событий
Наиболее простая форма события — это событие, просто уведомляющее о том, что оно произошло. Например, событие OnClick, которое присутствует в большинстве визуальных компонентов, имеет только один параметр — Sender:
void fastcall TForml::FormClick(TObject *Sender).
Этот тип события определяется в VCL как TNotifyEvent.
При создании события, обеспечивающего простое уведомление, можно
воспользоваться типом события TNotifyEvent. OnMyClick, событие TOsnova — простое событие уведомления. Оно объявляется следующим образом:
__propertyTNotifyEventOnMyClick = {read=FOnMyClick, write=FOnMyClick};
Каждое событие должно иметь виртуальный метод, который используется внутри компоненты, чтобы сообщить ей о своем возникновении. Такие методы объявляются виртуальными (чтобы классы-наследники могли получить к ним доступ) и в защищенном разделе.
Виртуальный метод, сообщающий о возникновении события OnMyClick, называется DoOnMyClick():
//---------------------------------------------------------------------------
void __fastcall TOsnova::DoOnMyClick()
{
if (FOnMyClick)
FOnMyClick(this);
}
//---------------------------------------------------------------------------
Сначала проверяется, был ли событию назначен обработчик. Если обработчик события был назначен, то вызывается функция, указатель на которую расположен в поле FOnMyClick, куда передается в качестве параметра указатель на компонент (this). Это событие будет отражено на вкладке Events в окне Инспектора Объектов.
При двойном клике Builder сгенерирует следующий код:
//---------------------------------------------------------------------------
void __fastcall TForm1::Osnova1MyClick(TObject *Sender)
{