** Павел |
Отправлено: 27.05.2006, 00:49 |
|
Не зарегистрирован
|
Доброго вам времени суток. Возникла такая проблема.
На форме есть компонент класса TShape.
Вопрос: как сделать, чтобы пользователь мог изменить размер компонента, как в редакторе Билдера? |
|
Grigoriy |
Отправлено: 27.05.2006, 15:43 |
|
Мастер участка
Группа: Участник
Сообщений: 381
|
CODE |
void __fastcall TForm1::Shape1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
static int X1;
static int Y1;
static int a;
if (!Shift.Contains(ssLeft)) {
a=0;
if ((X>4) && (X<Shape1->Width-4) && (Y>4) && (Y<Shape1->Height-4))
{a=a|1;Shape1->Cursor=crSize;};
if (abs(X)<=4) {a=a|2;Shape1->Cursor=crSizeWE;};
if (abs(X-Shape1->Width)<=4) {a=a|4;Shape1->Cursor=crSizeWE;};
if (abs(Y)<=4) {a=a|8;Shape1->Cursor=crSizeNS;};
if (abs(Y-Shape1->Height)<=4) {a=a|16;Shape1->Cursor=crSizeNS;};
if (a==10) {Shape1->Cursor=crSizeNWSE;};
if (a==12) {Shape1->Cursor=crSizeNESW;};
if (a==20) {Shape1->Cursor=crSizeNWSE;};
if (a==18) {Shape1->Cursor=crSizeNESW;};
X1=X;Y1=Y;
};
if ((Shift.Contains(ssLeft))&&(a))
{
if (a==1)
{
Shape1->Left+=X-X1;
Shape1->Top+=Y-Y1;
};
if (a & 2)
{
Shape1->Left+=X-X1;
Shape1->Width-=X-X1;
};
if (a & 8)
{
Shape1->Height-=Y-Y1;
Shape1->Top+=Y-Y1;
};
if (a & 4)
{
Shape1->Width+=X-X1;
X1=X;
};
if (a & 16)
{
Shape1->Height+=Y-Y1;
Y1=Y;
};
};
}
|
|
|
** Павел |
Отправлено: 28.05.2006, 10:42 |
|
Не зарегистрирован
|
Большое спасибо Григорий, вы мне очень помогли. |
|