2013-06-04 2 views
1

실제 사용 예제 : 내 응용 프로그램에 MainForm이 있습니다. 사용자는 버튼을 클릭하고 로그인하여 모달 AdminSettingsForm을 볼 수 있습니다. AdminSettingsForm에서 더 많은 모달 형식을 열 수 있습니다.모달 폼과이 모달 폼에서 열린 모달 폼을 닫는 방법?

사용자가 AdminSettingsForm을 표시하기 위해 로그인하면 타이머가 시작되어 비활성 기간 (유휴 상태) 후에 AdminSettingsForm을 닫아야합니다.

나는이 시도 :

for i := Screen.FormCount - 1 downto 1 do begin 
    if Screen.Forms[i] <> MainForm then begin 
    Screen.Forms[i].Close(); 
    end; 
end; 

아무것도 내가 맨 위의 모달 폼을 닫을 때까지 발생하지, 다른 모든 내용은 즉시 닫습니다.

답변

0

미안 해요,하지만 난 이미 솔루션을 찾은 것 같아요 :

Screen.ActiveForm.Close(); 

for i := Screen.FormCount - 1 downto 1 do begin 
    if Screen.Forms[i] <> MainForm then begin 
    Screen.Forms[i].Close(); 
    end; 
end; 

가 작동하는 것 같다을 ...

+0

을 시도하는 '이외의 모든 형태의 MainForm'은 관리 용으로 사용됩니다. 관리자가 아닌 사용자를 위해 새로운 양식을 만드는 경우에는 어떻게해야합니까? –

+1

정확합니다. 이 가정은 현재 내 응용 프로그램에 적용됩니다. 실제로 비 관리자 사용자를위한 다른 양식이 있지만 MainForm에서 트리거 된 모든 양식이 모달이라는 또 다른 가정이 있습니다. 그래서 현재 AdminForm이 보여줄 때 다른 폼이 보이지 않는다는 것을 알고 있습니다. 이 가정이 더 이상 유효하지 않을 때 나는 더 나은 해결책을 찾기 위해 머리를 터지게 될 것이다. – Zalumon

0

이 가정이

with Screen do 
    for I := FormCount - 1 downto 0 do 
     if Forms[I] <> Application.MainForm then 
      Forms[I].Close; 
관련 문제