폼이나 Panel들 컨테이너 컨트롤들은 컨트롤위에 Control들이 있는데..
그 배치순서를
- BringToFront 로 맨앞으로 가져올수있고
- SendToBack으로 맨뒤로 보낼수 있습니다.
그런데 혹시 폼(또는 컨테이너 컨트롤)위에 배치되는 전체순서를 알고 있나요?
그 선제순서는 Controls[0]가 맨 뒤이고 Controls[ControlCount-1] 이 맨앞입니다.
어떤 Control을
- SendToBack하면 Panrent->Control[0]에 배치되고
- BringToFront하면 Panrent->Control[Parent->ControlCount-1]에 배치됩니다.
그런데 컨트롤을 배치를 맨앞이나 맨뒤가 아닌 중간어딘가에 특정위치로 보내려면 어떻게 하면 될까요?
그것은 SetZOrderPosition 이라는 함수를 쓰면 됩니다. ==> 오늘 팁
VCL SendToBack, BringToFront 함수도 코드를 보면 SetZOrderPosition 함수를 호출하고 있죠..
//-------------------------------------------------------------------------------
procedure TControl.BringToFront;
begin
SetZOrder(True);
end;
//-------------------------------------------------------------------------------
procedure TControl.SendToBack;
begin
SetZOrder(False);
end;
//-------------------------------------------------------------------------------
procedure TControl.SetZOrder(TopMost: Boolean);
begin
if FParent <> nil then
if TopMost then
SetZOrderPosition(FParent.FControls.Count - 1) else
SetZOrderPosition(0);
end;
//-------------------------------------------------------------------------------
VCL에 원래 있는 함수인데.. 아는사람도 쓰는사람도 별로 없는것같구해서 함 올려 봅니다.
그럼..
|
SetZOrderPosition 함수에는 쉽게 접근이 안되네요
아래링크를 참조하세요
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=55000