간단한 샘플 코딩입니다.
Panel1 ~ 4 까지 4개 올렸구요
CheckBox를 1~4까지 4개 올렸구요
CheckBox를 Click할때 CheckBox의 Checked속성에 맞춰 Panel을 Visible을 변경해줬습니다.
//-----------------------------------------------------------------------
void __fastcall TForm1::SetPanelTop(TPanel *pan)
{
int iTop=0;
if(pan==Panel1)pan->Top=0;
else if(Panel1->Visible)iTop=Panel1->Height;
if(pan==Panel2)pan->Top=iTop;
else if(Panel2->Visible)iTop+=Panel2->Height;
if(pan==Panel3)pan->Top=iTop;
else if(Panel3->Visible)iTop+=Panel3->Height;
if(pan==Panel4)pan->Top=iTop;
else if(Panel4->Visible)iTop+=Panel4->Height;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox1Click(TObject *Sender)
{
SetPanelTop(Panel1);
Panel1->Visible=CheckBox1->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox2Click(TObject *Sender)
{
SetPanelTop(Panel2);
Panel2->Visible=CheckBox2->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox3Click(TObject *Sender)
{
SetPanelTop(Panel3);
Panel3->Visible=CheckBox3->Checked;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::CheckBox4Click(TObject *Sender)
{
SetPanelTop(Panel4);
Panel4->Visible=CheckBox4->Checked;
}
//---------------------------------------------------------------------------
그럼..
unitas 님이 쓰신 글 :
: 답변 감사합니다.
: 말씀하신 방법이 이것이 맞는지 모르겠는데요.
: 우선 사용자가 클릭을 하면 화면의 모든 Panel의 Visible을 False로 합니다.
: 이후 사용자가 선택한 Panel만 alTop으로 설정하고 Visible을 True로 합니다.
: 반복하면 역시 순서가 꼬입니다.
: (예를 들어 사용자가 1, 2, 3, 8, 13 Panel을 선택하면 13, 8, 3, 2, 1 이런식으로 순서가 배열되고
: 다시 반복하면 13, 1, 8, 2, 3 이런식으로 어떠한 규칙도 없이 꼬입니다.)
:
:
:
: 장성호 님이 쓰신 글 :
: : 원래 그렇게 되어있습니다.
: :
: : Align으로 alTop이 하나의 Base-Control 에 여러개가 있는 상황에서
: : 특정 Control의 Visible을 변경하면
: :
: : Design-time에 놓였던 순서대로 항상 나타나진 않습니다.
: :
: : 어떤 control을 visible=true로 변경할때
: : 현재 AlTop으로 되어있는 Control의 밑에 붙게 됩니다.
: :
: : 이경우 내가 원하는 순서대로 놓고 싶으면
: : 현재 altop으로 visible=true되어있는 control이 있으면
: : 그놈이 visible=true로 할 control의 위에 놓일 놈인지, 아래 놓일 놈인지 판단해 보구
: : control의 top을 변경한후에 visible=true하시면 됩니다.
: :
: : 조금 다른 경우이지만
: : 다름링크를 참조해보세요
: :
http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=55053
: :
: : 그럼..
: :
: :