Курсовая работа: Построение компоненты в Builder C++
Shar->Left=(this->Width-D)/2+D-Shar->Width;
Shar->Top=this->Height/2-Shar->Height/2;
this->Canvas->Font->Size=this->Height/20;
this->Canvas->TextOutA(this->Width/4,3,"Моякомпонента");
this->Invalidate();//перерисовываем компоненту
N=false;//больше сюда не заходим
}
a+=0.2;//увеличиваем значение угла поворота (процесс движения)
Shar->Left=(Marshrut->Width-(D-(D-d)/2))/2+(D-(D-d)/2)/2+(D-(D-d)/2)/2*cos(a)-
Shar->Width/2;
Shar->Top=(Marshrut->Height-(D-(D-d)/2))/2+(D-(D-d)/2)/2-(D-(D-d)/2)/2*sin(a)-
Shar->Height/2;
}
}
//---------------------------------------------------------------------------
Сначала вызывается метод базового класса TCustomControl::WndProc(Message), затем устанавливаются новые размеры (если они были изменены), вызывается функция Invalidate() для перерисовки компоненты, и присваиваются новые координаты шарику.
8 Переопределение метода CanResize(int &NewWidth, int &NewHeight).
Если пользователь изменит размеры компоненты в режиме разработки, пропорционально должны измениться размеры всех объектов, из которых состоит компонента.
//---------------------------------------------------------------------------
bool __fastcall TOsnova::CanResize(int &NewWidth, int &NewHeight)
{//изменяем
if (ComponentState.Contains(csDesigning))
{
D=this->Width/5*4; // диаметрыокружностей
d=this->Width/5*3;
Marshrut->Width=this->Width; //размерыэкз. классаТMarshrut
Marshrut->Height=this->Height;
Shar->Width=(D-d)/2; //размерыэкз. классаТShar
Shar->Height=(D-d)/2;
Shar->Left=(this->Width-D)/2+D-Shar->Width;