2013-06-06 2 views
0

내 응용 프로그램에 로그인 대화 상자 (두 모달)를 통해 접근 할 수있는 관리 대화 상자가 있습니다.마법사 스타일 : 현재 모달 대화 상자를 닫고 단추 처리기에서 다음 모달 대화 상자를 여는 방법은 무엇입니까?

로그인 대화 상자에서 사용자가 암호를 입력하고 확인을 클릭합니다. ok 버튼 핸들러에서 Self.Close()를 호출하고 AdminForm.ShowModal()을 호출합니다.

문제는 AdminForm.ShowModal() 호출 (AdminForm을 이동할 때 표시)이 반환 될 때까지 LoginForm이 AdminForm 뒤에 열려 있다는 것입니다.

아이디어가 있으십니까?

은 내가

LoginForm.ShowModal(); 

if <check some variable from LoginForm to see if user logged in successfully> then begin 
    AdminForm.ShowModal() 
end; 

처럼 3 곳에서 모두 형태를 보여줌으로써이 문제를 해결 할 수 알고하지만 난 LoginForm에서 확인 단추 처리기 내에서 작동하는 솔루션을 위해 특별히 찾고 있습니다.

답변

1

맞은 방법은 참으로 제 3 장소에서 두 모양을 보여주기위한 것이다. 그 장소는 이미 존재하므로 조금 더 많은 코드를 추가하는 것이 중요하지 않습니다.

"LoginForm의 일부 변수"를 확인하기위한 의사 코드가 존재하지 않아도됩니다. 로그인 폼의 모달 결과는 이미 누군가에 로그인 할 때 관리 여부를 알려줍니다.

if LoginForm.ShowModal = mrOK then 
    AdminForm.ShowModal; 

로그인 폼의 작업이 로그인 처리하는 것입니다 로그인 폼은 작업이 완료된 후 일이되어 있는지 자체를 고려한다. 그것은 프로그램을 구동하고 모든 개별 부품들을 함께 연결하는 "제 3의 장소"입니다.

정말 관리도 완료 될 때까지 로그인 양식의 ShowModal 방법은 다음 단순히 관리 양식 내에서 로그인 폼을 숨길 수 반환하지해야하는 경우 :

procedure TAdminForm.FormShow(Sender: TObject); 
begin 
    LoginFOrm.Hide; 
end; 
+0

은 흠 그래, 작품을 숨 깁니다. 문서를 읽은 후에도 close와 hide의 차이점을 실제로 얻지는 못합니다. 또한 닫는 호출이 로그인 양식을 닫지 않는 이유는 내게는 수수께끼입니다. 사실, 로그인 폼의 showmodal 메소드가 돌아 왔을 때 나는 신경 쓰지 않는다. 다른 대화 상자가 떠 다니는 것을 원하지 않는다. – Zalumon

관련 문제