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
[56548] Re:Re:Re:[질문]여러 Panel의 alTop과 Visible변경
장성호 [nasilso] 997 읽음    2009-03-30 16:04
간단한 샘플 코딩입니다.

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
: :
: : 그럼..
: :
: :

+ -

관련 글 리스트
56539 [질문]여러 Panel의 alTop과 Visible변경 unitas 1162 2009/03/30
56540     Re:[질문]여러 Panel의 alTop과 Visible변경 장성호 1261 2009/03/30
56542         Re:Re:[질문]여러 Panel의 alTop과 Visible변경 unitas 1210 2009/03/30
56548             Re:Re:Re:[질문]여러 Panel의 alTop과 Visible변경 장성호 997 2009/03/30
56550                 Re:Re:Re:Re:[질문]감사합니다. unitas 1032 2009/03/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.