|
|||||||||
경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지 |
|
대부분의 Layer기반 편집기능이, 선택된 녀석은 앞으로 오게 마련이죠 :) 필요하면 Z-order를 Hold하는 처리를 해 주면되겠지만, 어디까지나 예제 코드구요.
SendMessage 이후의 처리는 좋은 생각이네요. SendMessage 라서 가능한 방법인데 미처 생각하지 못했습니다. void __fastcall TForm1::DragInitializer(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y){ TControl* childControl = dynamic_cast<TControl*>(Sender); if (childControl){ PanelDragContainer->Parent = childControl->Parent; PanelDragContainer->Left = childControl->Left; PanelDragContainer->Top = childControl->Top; PanelDragContainer->Width = childControl->Width; PanelDragContainer->Height = childControl->Height; childControl->Parent = PanelDragContainer; childControl->Left = 0; childControl->Top = 0; PanelDragContainer->Visible = true; ReleaseCapture(); SendMessage(PanelDragContainer->Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); PanelDragContainer->Visible = false; childControl->Left = PanelDragContainer->Left; childControl->Top = PanelDragContainer->Top; childControl->Parent = PanelDragContainer->Parent; } } //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){ PanelDragContainer->DoubleBuffered = true; PanelDragContainer->Visible = false; DoubleBuffered = true; Label1->OnMouseDown = DragInitializer; Label2->OnMouseDown = DragInitializer; Label3->OnMouseDown = DragInitializer; Label4->OnMouseDown = DragInitializer; } 하나로 끝나는군요 :) 관련 글 리스트
|
Copyright © 1999-2015, borlandforum.com. All right reserved. |
그런데.. DragInitializer 함수의 SendMessage 바로 뒤에 다시 Control을 원상태로 Parent를 변경하고
Panel을 visible=false하는 코드를 넣어도 될듯 한데요..
그리고
당연한것 같기도 하지만
Drag하면 control의 ZOrder가 바뀌어 버릴것 같네요..
Parent가 같은 control이 여러개 있을경우 뒷쪽에 있던것이 앞으로 올듯...
그럼..