|
안녕하세요.. 카크랍니다.
솔직히 어떤 상황인지 잘 모르겠군요..^^
몰라도 답변올리는 용기 대단하져..^^ (길게 썼는데 아무런 언급이 없으면
짜증나자나요..)
근데 좀 의아한게, 보통 PageControl에서는 여러개의 TabSheet가 있을때
Next Page, Previous Page가 항상 Enable 되어 있어서 마지막에서 next를
선택하면 젤 처음으로가고..이런 식으로 동작하자나요. 결국..패패루님의
의도를 파악 못한것 같다는 겁니다.. ㅜ.ㅜ
: 이런식으로 같은 타입의 멤버 중 특정 조건에 맞는 것만 선택 가능하게 제
: 한하는 것을 어떻게 처리하는지가 궁금합니다.
이 부분도 좀 의아하지만 콤포넌트를 찾아서 조건에 맞는것을 찾는 정도만이라면
아래와 같이 할수 있겠네요..
unsigned short i;
TClass ClassRef;
for(i=0;i<ComponentCount-1;i++)
{
ClassRef = Components[i]->ClassType();
if(String(ClassRef->ClassName())=="TTabSheet")
{
// 원하는 검색조건을 넣으시구..
if(dynamic_cast<TnWizardPage *>(Components[i])->Name == "nWizardPage1")
// 조건 제한에 따른 무언가...
}
}
다시한번 자세히 설명 올리시면, 많은 분들이 도움을 주실것 같습니다..^^
패패루님 어여 완성하셔서...공개하시는 날이 오길..
수거하세여..
패패루 님이 쓰신 글 :
: 현재 만들고 있는 위저드컨트롤은, TPageControl과 유사한 방식으로
: 동작합니다.
:
: 음.. NewPage를 하면, 새로운 위저드페이지가 삽입되면서, 페이지 위
: 치에 따라 배경 그림과 각종 기본 캡션이 자동으로 그려지는 방식이구
: 요, 각 페이지에는 NextPage와 PriorPage라는 프라퍼티가 있어서
: 이 값이 NULL인 경우 Next버튼이나 Prior버튼이 Disable 처리되는 구조
: 입니다.
:
: 따라서 이 컨트롤을 써서 위저드를 구현할 경우, 라디오버튼 등에 의해
: 페이지 분기가 일어난다는지 하는 액션을 효율적으로 구현할 수 있고
: 아무튼 제가 지금까지 본 위저드컨트롤보다 훨씬 편리할 것 같습니다.
: 완성되면 이 사이트에도 공개할거구요.
:
: 빌더 컴포넌트 제작에 필요한 거의 모든 기술을 다 쓰게 되는것 같네요.
: 저 역시 20여개의 컴포넌트를 만들어봤지만 이런 형태의 컴포넌트는
: 처음이라서 많이 헤매고 있습니다.
:
: 지금 잘 안되는 것은, 각 페이지의 NextPage와 PriorPage 프라퍼티에
: 넣을 수 있는 페이지포인터를 제한하는 것인데,
: 좀 쉽게 설명드리자면, 폼에 PageControl을 2개를 박아 넣고, 각각
: 2개의 TabSheet를 만듭니다.
: 이렇게 하면, Form에는 PageControl1, PageControl2, TabSheet1,
: TabSheet2, TabSheet3, TabSheet4, 여섯개의 멤버가 추가되겠죠.
:
: PageControl1에서 ActivePage프라퍼티의 콤보박스를 선택하면, TabSheet1과
: TabSheet2만 선택이 가능하죠.
: PageControl2에서는 역시 TabSheet3와 TabSheet4만 선택이 가능하구요.
:
: 이런식으로 같은 타입의 멤버 중 특정 조건에 맞는 것만 선택 가능하게 제
: 한하는 것을 어떻게 처리하는지가 궁금합니다.
:
: 제 컨트롤의 이름은 TnWizard이고, 각각의 페이지는 TnWizardPage입니다.
: 이 TnWizardPage의 프라퍼티인 NextPage와 PriorPage는 모두 TnWizardPage*
: 타입의 프라퍼티이구요.
: 프라퍼티의 속성상, 자신의 포인터는 지정할 수 없어야 하고, 페이지가 맨
: 첫페이지이거나 맨 마지막 페이지인 경우에는 각각 PriorPage와 NextPage에는
: NULL만이 들어갈 수 있어야 합니다.
: 현재는 SetNextPage() 메쏘드에서 이를 채크하여 거부하는 구조인데, TPageControl
: 에서 이루어지는 것 처럼 아예 대입할 수 있는 후보목록에서 나오지 않게 하고
: 싶습니다.
: 즉, 맨 처음 페이지에서 PriorPage 프라퍼티의 콤보박스를 선택하면, 선택할 수 있
: 는 페이지포인터가 전혀 없고,
: 두번째 페이지에서는 두번째 페이지의 포인터 외에 다른 페이지의 포인터들이 나열
: 되고...
:
: 어떻게 미리 제한을 거는지 잘 모르겠네요.
: 제 생각엔, TDesigner 클래스를 이용하는 것 같기도 한데..
: 아무튼, 어떻게 하는지 알고 계시다면 알려주시면 고맙겠습니다.
:
: 패패루였슴다.
|