Курсовая работа: Построение компоненты в Builder C++
//---------------------------------------------------------------------------
4 Переопределённые методы базового класса
Переопределённые методы базового класса объявлены в секции protected.
5 Переопределение метода CreateWnd().
При работе компоненты необходимо динамически создать экземпляры классов TMarshrut и ТShar. Хотелось бы сделать это непосредственно в конструкторе класса TOsnova, но попытка запуска окончится генерированием исключения времени выполнения:
Control has no parent window (Управляющий элемент не имеет родительского окна). Решение состоит в переопределении метода CreateWnd().
//---------------------------------------------------------------------------
void __fastcallTOsnova::CreateWnd()
{
if (ComponentState.Contains(csDestroying))
return; //если компонента разрушается - выход
TCustomControl::CreateWnd(); //базовый метод
Marshrut=new TMarshrut(this); //создаёмэкземпляркласса
Marshrut->Parent=this;
Marshrut->Width=this->Width;
Marshrut->Height=this->Height;
Shar=new TShar(this); //создаёмэкземпляркласса
Shar->Parent=this;
Shar->Width=(D-d)/2;
Shar->Height=(D-d)/2;
Shar->Left=(this->Width-D)/2+D-Shar->Width;
Shar->Top=this->Height/2-Shar->Height/2;
if (ComponentState.Contains(csDesigning))
return; //есликомпонентаразрабатывается - выход
else; //иначезапускаемтаймер
SetTimer(Handle, 1, FSkorosty, 0);
}
//---------------------------------------------------------------------------
Сначала вызывается функция CreateWnd() базового класса, которая вернёт дескриптор окна. После этого мы можем создать экземпляры наших классов, а также функцией SetTimer() создать таймер.
6 Переопределение метода Paint()
//---------------------------------------------------------------------------
void __fastcall TOsnova::Paint()