그냥 다음과 같이하면..
Mouse가 Panel2의 Parent-Control의 영역을 벗어나지 않습니다.
void __fastcall TForm1::Panel2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Shift.Contains(ssLeft))
{
ReleaseCapture();
Panel2->Perform(WM_SYSCOMMAND,0xf012,0);
//또는 SendMessage(Panel2->Handle,WM_SYSCOMMAND,0xf012,0);
}
}
그런데 위 방법은
Mouse가 Panel2의 Parent-Control의 영역을 벗어나지는 않지만..
Panel2를 클릭한 위치에 따라.. Panel2의 일부 영역이 Parent-Control의 영역을 조금은 벗어날 것입니다.
Mouse뿐 아니라 Panel2가 Panel2의 Parent-Control의 Client영역 안에 있게 하고 싶다면..
Lyn님이 말씀하신 ClipCursor를 잘 이용해야 할것입니다.
그럼..
도대체 님이 쓰신 글 :
: 이렇게하면 드래그는 되는데
:
: 밑에 패널 밖으로 나가버리네요 ㅡㅡ
:
: 이거 해결책 없을까요?
:
:
: __fastcall TForm19::TForm19(TComponent* Owner)
: : TForm(Owner)
: {
: isDrag=false;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm19::Panel2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
: int X, int Y)
: {
: isDrag=true;
: Panel2->Left = X;
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm19::Panel2MouseMove(TObject *Sender, TShiftState Shift, int X,
: int Y)
: {
: if(isDrag)
: Panel2->Left += X;
:
: }
: //---------------------------------------------------------------------------
: void __fastcall TForm19::Panel2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
: int X, int Y)
: {
: isDrag = false;
: }
: |