2011-12-05 2 views
9

저는 델파이 7을 사용하고 있으며 마법사 인터페이스를 만들려고합니다. 마법사를 만드는 더 쉬운 방법이 있는지 모르겠으므로 마법사의 각 단계마다 별도의 양식을 작성하려고합니다. 사용자가 "다음"을 클릭하면 활성 양식이 닫히고 다음 양식이 열립니다. screen-shot델파이 7에서 마법사 인터페이스 만들기

내가 매개 변수로이 개 형태를 취할 절차를했습니다 : 여기

는 두 개의 연속적인 형태의 스크린 샷이다 닫힙니다 형태와 마법사의 다음 형태

class Procedure Tspad.nextForm(showForm, closeForm: TForm); 
begin 
    closeForm.Close; 
    showForm.Showmodal; 
end; 

Tspad.nextForm(echipContractForm, clientContractForm); 

내가 프로그램을 실행하고 난 "다음"버튼을 누르면, 다음 폼 apeare : 나는 folowing 코드가 실행되는 "다음"버튼을 클릭

그러나 curent 하나는 닫히지 않습니다.

이 작업을 수행하려면 어떻게해야합니까? 또는 마법사를 만드는 또 다른 효율적인 방법이 있습니까?

+4

TPageControl 사용 : http://delphi.about.com/od/delphitips2007/qt/hidepagectrltab.htm – SimaWB

+3

프로젝트 Jedi (JVCL)에는 [TJvWizard]라는 마법사 구성 요소가 있습니다 (http : //wiki.delphi-jedi. org/wiki/JVCL_Help : TJvWizard). –

답변

20

마법사를 만드는 가장 일반적인 방법 중 하나는 페이지 컨트롤을 사용하는 것입니다. 마법사의 각기 다른 페이지는 페이지 컨트롤의 다른 페이지/탭 시트입니다. 나는 이것이 Windows가 마법사를 구현하는 방법이라고 생각합니다.

당연히 모든 탭을 숨기려고합니다. 각 탭 시트에 대해 TabVisibleFalse으로 설정하여이 작업을 수행하십시오. 마법사를 통해 앞뒤로 이동하려는 경우 (예 : 사용자가 다음 또는 이전 버튼을 클릭하면 선호도에 따라 ActivePage 또는 ActivePageIndex을 설정하여이 효과를 적용하십시오.

+0

이것은 내가 과거에 해낸 일입니다. 페이지 컨트롤과 일부 버튼을 사용하여 마법사에 대한 별도의 양식이 있어야합니다. –

+0

나는 이것에 동의하지만 LaKraven이 아이디어를 페이지마다 작성하고 런타임에 페이지를 도킹하는 것에 동의한다. 그렇지 않으면 마법사는 거대한 스파게티 공으로 변하는 경향이 있습니다. –

+0

@Warren LaKraven은 실제로 폼이 아닌 프레임을 제안하고 있으며 디자인 타임에 프레임을 도킹한다고 가정합니다. 그러나 어느 쪽이든 작동하고 스파게티를 막을 수있는 아주 좋은 기술이 될 수 있습니다. –

14

단일 양식에 표시되는 콘텐츠를 나누는 좋은 방법은 프레임을 사용하는 것입니다.

프레임은 자신의 더 창문이없는 것을 제외하고, 형태 같은 많은,하지만 오히려 호스트 양식 안에 앉아있다.

(데이비드 헤퍼 넌은 제안했다 같은) TPageControl 심지어 TNotebook와 결합하면 (TPageControl 같은 정확히 꽤-많이 , 단지 그것을로 시작하는 탭이없는), 당신이와 끝까지 쉽게 유지 보수 할 수있는 마법사.

+2

+1하지만 'TNotebook'은 조금 이상합니다. 그것은 나에게 유산으로 보이며 아마도 사용하기 조금 더 힘듭니다. –

+0

TPageControl이 델파이 7에 실제로 존재하는지 기억하지 못하기 때문에 언급합니다. (요즘 많이 사용하지만 델파이 7을 보면서 기억할 수는 없습니다) – LaKraven

+2

예 D7에 오래 있었고 그 전에는 너무 오래했습니다 –

2

이 작업에 도움이되는 일부 구성 요소를 테스트 할 수 있습니다 (내부적으로 tPageControl 또는 TNotebook 사용). this link을 참조하십시오.

감사합니다.

11

JVCL은 매우 간단하고 효과적인 방법 (TJvWizard)으로 마법사를 만들 수있는 좋은 컨트롤을 제공합니다. http://jvcl.delphi-jedi.org/

+0

동의. 휠 재발 명에 많은 시간을 절약 할 수 있습니다. –

0

TMS TAdvSmoothStepControl (무료는 아님)을 고려해 볼 수도 있습니다. 다른 해결책은 프로그램에 '외부'뿐이며 Inno Setup을 사용하여 '비 설치 설정'의 경우에도 마법사를 만드는 것입니다.

사실 Inno Setup을 사용하면 프로그램을 설치하지 않고도 마법사에 유용 할 수있는 많은 생각을 할 수 있습니다 (.ini 파일 및 레지스트리 수정, 프로그램 시작/중지 ...).

+1

OP의 마지막 문장은 OP가 설치 마법사를 생성하려고한다고 가정합니다. 스크린 샷은 다른 방법을 제안합니다. 나는 당신의 대답을 편집하고 TAdvSmoothStepControl (이는 좋은 구성 요소 임)의 추천을 남겨 둘 것을 제안한다. – LaKraven

+0

@LaKraven Inno Setup의 주요 용도는 설치 설정을 만드는 것이지만,)를 사용하여 프로그램을 닫고 사용자 선택에 따라 .ini 파일을 변경 한 다음 프로그램을 다시 실행하는 등 간단한 작업을위한 마법사로 사용할 수 있습니다. 모든 것이 명확하지 않을 수 있으며 답변을 수정하겠습니다. – philnext