임펠리테리입니다.
만약 컴퍼넌트가 윈도우핸들을 갖는, 즉 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 개발하고 있는데요 .. 미니 빌더라고 보시면 됩니다..
:
: 컴퍼넌트를 동적생성해서 화면에 뿌려주고 그걸 마우스로
:
: 드래그 드럽해서 이동시키고 싶은데.. 방법을 잘 모르겠네요
:
: 이동하고싶은 컴퍼넌트에서 드래그엔 드럽 이벤트를 줘야할꺼같은데
:
: 누가 방법좀 가르쳐주세요 ^^;
:
:
|