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
[6777] Re:컴퍼넌트 드래그 하기....
박지훈.임프 [cbuilder] 2515 읽음    2001-04-12 20:59
임펠리테리입니다.

만약 컴퍼넌트가 윈도우핸들을 갖는, 즉 TWinControl을 상속받는 컴퍼넌트라면 팁 게시판의 3번 글을 보시면 됩니다.
팁! 런타임에 컨트롤 드래그하기...

그런데 만약 윈도우핸들이 없는 컨트롤이라면 이게 안됩니다. 윈도우 핸들이 필요하니까요.
그래서, 꽁수 하나를 알려드리지요.
폼의 OnDragOver 이벤트에 핸들러를 다음과 같이 작성합니다.
void __fastcall TForm1::FormDragOver(TObject *Sender, TObject *Source,
      int X, int Y, TDragState State, bool &Accept)
{
    TControl *SourceControl = dynamic_cast<TControl *>(Source);
    if(SourceControl!=NULL)
    {
        Accept = true;
        SourceControl->Left = X;
        SourceControl->Top = Y;
    }
}

그리고, 드래그해서 이동할 모든 컨트롤들의 프로퍼티 중 DragMode를 dmAutomatic로 세팅하세요.
컴파일하고 실행하면, DragMode가 dmAutomatic로 세팅된 모든 컨트롤들이 드래그가 되는 것을 보실 수 있을 겁니다. 그런데, 이걸로 빌더와 같이 만들기는 좀 무리가 있습니다. 빌더와 같은 RAD 디자인 환경을 만들려면 더 자연스러운 처리가 필요한데, 이 꽁수는.. 말 그대로 꽁수라서, 그렇게 스무스하지는 않습니다.

그럼 이만...


전재득 님이 쓰신 글 :
: 안녕하세요 ^^;
:
: TooL 개발하고 있는데요 .. 미니 빌더라고 보시면 됩니다..
:
: 컴퍼넌트를 동적생성해서 화면에 뿌려주고 그걸 마우스로
:
: 드래그 드럽해서 이동시키고 싶은데.. 방법을 잘 모르겠네요
:
: 이동하고싶은 컴퍼넌트에서 드래그엔 드럽 이벤트를 줘야할꺼같은데
:
: 누가 방법좀 가르쳐주세요 ^^;
:
:

+ -

관련 글 리스트
6762 컴퍼넌트 드래그 하기.... 전재득 2191 2001/04/12
6777     Re:컴퍼넌트 드래그 하기.... 박지훈.임프 2515 2001/04/12
6783         Re:Re:컴퍼넌트 드래그 하기.... 전재득 2367 2001/04/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.