C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[21160] Re:버튼을 드래그 할려면 어케 해요~ ?
초짜 [] 1169 읽음    2002-08-31 14:06
빌더테스트 님이 쓰신 글 :
: 폼 위에 버튼을 몇개 두구서 사용자가 원하는 위치에 배치해서 사용하도록
:
: 드래그로 옮기게 하구 싶은데 .. 잘 않되는군요
:
: 참고할만한 소스 같은거 없을 까요~~
:
: 그럼

두가지 예제입니다.

한가지는 조금 다른 예제이겠지만..

우선은 이게 더 재미있을꺼 같아서요..

예전에 빌더 Q&A뒤지다가 나온 소스구요..

void __fastcall TForm1::Button1MouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
    if (Shift.Contains(ssLeft)){
        TControl *TempControl = dynamic_cast<TControl *>(Sender);
        TPoint pt;
        pt.x = TempControl->BoundsRect.Left;
        pt.y = TempControl->BoundsRect.Top;

        ImageList1->DragMove( pt.x + X - DownPos.x, pt.y + Y - DownPos.y );
    }
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Button1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    TRect   R;
    Graphics::TBitmap *Bmp = new Graphics::TBitmap;
    R = dynamic_cast<TControl *>(Sender)->BoundsRect;
    Bmp->Width = R.Right - R.Left;
    Bmp->Height = R.Bottom - R.Top;
    BitBlt( Bmp->Canvas->Handle, 0, 0, Bmp->Width, Bmp->Height,
         GetDC(dynamic_cast<TControl *>(Sender)->Parent->Handle), R.Left, R.Top, SRCCOPY );

    ImageList1->Clear();
    ImageList1->Width = Bmp->Width;
    ImageList1->Height= Bmp->Height;

    ImageList1->Add( Bmp, NULL );
    ImageList1->BeginDrag(dynamic_cast<TControl *>(Sender)->Parent->Handle, R.Left, R.Top );
    DownPos = Point( X, Y );
    delete Bmp;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    ImageList1->EndDrag();
    TControl *TempControl = dynamic_cast<TControl *>(Sender);
    X += TempControl->Left;
    Y += TempControl->Top;
    TempControl->SetBounds( X - DownPos.x, Y - DownPos.y,
        TempControl->Width, TempControl->Height);
    TempControl->Invalidate();
    Invalidate();
}

두번째꺼는 소스를 좀 고쳐서 사용하시면 될꺼에요..

그럼 좋은 하루 되시길~~

/////////////// 두번째

void __fastcall TForm1::Button1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    if ( !bClickFlag )
        bClickFlag = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1MouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
    if ( bClickFlag )   {
        Button1->Left += X;
        Button1->Top += Y;
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
    if ( bClickFlag )
        bClickFlag = false;
}
//---------------------------------------------------------------------------

+ -

관련 글 리스트
21153 버튼을 드래그 할려면 어케 해요~ ? 빌더테스트 753 2002/08/31
21173     Re:버튼을 드래그 할려면 어케 해요~ ? 강다니엘 995 2002/09/01
21175         Re:Re:^^;; 역시 더 좋은 팁이 있군.. ㅋㅋ 근데요. 버튼 클릭이벤트는 어떻게 처리해줘야 되요? ( 초짜 971 2002/09/01
21176             Re:Re:Re:^^;; 역시 더 좋은 팁이 있군.. ㅋㅋ 근데요. 버튼 클릭이벤트는 어떻게 처리해줘야 되요 니엘이 1029 2002/09/02
21160     Re:버튼을 드래그 할려면 어케 해요~ ? 초짜 1169 2002/08/31
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.