C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Изменение размера компонента
** Павел
Отправлено: 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


Не зарегистрирован







Большое спасибо Григорий, вы мне очень помогли.

Вернуться в Вопросы программирования в C++Builder