|
런타임때 Control 을 마우스로 클릭해서 옮기는것은?
[방법1]
보통 TWinControl은
MouseDown이벤트에서 아래와 같이 코딩하면 됩니다.
void __fastcall TForm1::Panel1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
TWinControl *wCtrl=(TWinControl *)Sender;
ReleaseCapture();
SendMessage(wCtrl->Handle,WM_SYSCOMMAND, 0xf012, 0);
// 또는 wCtrl->Perform(WM_SYSCOMMAND, 0xf012, 0);
}
//---------------------------------------------------------------------------
[방법2]
그러나 TImage는 안됩니다.
왜냐하면 Handle이 없기 때문입니다.
TImage 를 Mouse로 위치를 이동하려면
MouseDown , MouseMove 이벤트를 이용해야 합니다.
그냥 마우스 Down때 좌표 기억하고
Move때 움직인 Delta만큼 TImage의 좌표를 바꿔주면 됩니다.
TImage *movImg;
int DeltaX;
int DeltaY;
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
movImg=(TImage *)Sender;
movImg->BringToFront();
DeltaX=X;
DeltaY=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(Shift.Contains(ssLeft))
{
int dx=X-DeltaX;
int dy=Y-DeltaY;
if(movImg)
{
movImg->Left+=dx;
movImg->Top+=dy;
}
}
}
//---------------------------------------------------------------------------
그럼...
수야!╋ 님이 쓰신 글 :
: 안녕하세요 ^^;;
:
: 하도 오랫만이라 생각이 안나네요. 검색을 해봐도 안나오고해서 ㅎ_ㅎ;;
:
: TForm 내에 있는 TImage같은 컨트롤들을 TForm 내에서 이동하고자 합니다.
:
: 물론 마우스로요.
:
: 간단한 명령어였던걸로 기억하는데.. 아시는분 답변좀 부탁드릴께요~
:
: 아.. 생각이 안나 ㅠ.ㅠ
|