2013-02-25 22 views
4

TForm.Show와 같은 것을 기다리지 않고 TForm을 표시하는 방법이 있는지 궁금합니다. 하지만 내가하고 싶은 것은Delphi Non Blocking ShowModal

예 (단지 ShowModal처럼) 모든 다른 형태를 차단하는 것입니다 :

I을 Form1과 Form2를 있습니다. Form1에는 Form2를 열어야하는 단추가 있지만 Form1은 차단되어 있지만 단추를 클릭해도 Form2를 연 다음에 오는 코드가 계속 이어집니다.

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    Form2.ShowModal; // ===> Something like that but the Code should continue, yet Form1 and all other forms are blocked (disabled) 
    MessageBox (0, 'Code continues', '', 0); 
end; 

희망 하시겠습니까?

+1

'Application.OnModalBegin'에 코드를 쓸 수 있습니까? –

+0

어떻게하면됩니까? –

+1

메소드를 속성에 연결합니다. 아마도 메인 폼의'OnCreate'에있을 것입니다. 'Application.OnModalBegin : = AppModalBegin''AppModalBegin (Sender : TObject)'프로 시저가 private 섹션 fi에 폼의 클래스 선언에있을 수 있습니다. MessageBox를 호출하는 메소드에서 :'TForm1.AppModalBegin begin MessageBox (..' –

답변

9

Windows를 beeing 사용 안 함으로 설정하고 나중에 EnableTaskWindows를 사용하여 다른 양식을 다시 사용하도록 설정하면 DisableTaskwindows를 호출 할 수 있습니다.

Form3.Show; 
    FP:=DisableTaskwindows(Form3.Handle); 
    //Some Code 
    EnableTaskwindows(FP); 
+1

하지만 새 양식 모달을 만들지는 않습니다. –

+0

상관 없어요! 이것은 정확하게 내가 찾고 있던 것이고 작동합니다! 고맙습니다. 왜 내가 필요한지 알고 싶다면 실제 코드가 처리되는 동안 "진행 창"을 열 수 있습니다. –

+5

@ 벤자민이 문제에 대한 잘못된 해결책입니다. 모달 형식으로 문제를 쉽게 해결할 수 있습니다. 이것은 당신이 질문 한 질문에 대한 대답입니다. –