回答
嘗試:
procedure ShowModalForm()
var
newForm: TNewForm;
begin
newForm := TNewForm.Create(nil);
try
newForm.ShowModal;
finally
newForm.Free;
end;
end;
實現此目的的最簡單方法是以模態方式顯示您的表單。調用ShowModal來顯示錶單並且主窗體將不會被禁用並且無法接收任何輸入。
你可以創建它是這樣的另一種方式。
procedure TForm1.btnCreateFormClick(Sender: TObject);
var
YourForm : TYourForm;
begin
YourForm := TYourForm.Create(nil);
try
YourForm.ShowModal;
finally
YourForm.Free;
end;
end;
如果你做了兩件事,我會贊成這個:1)聲明'YourForm'是一個局部變量(在'procedure'和'begin'之間),2)將'FreeAndNil'改爲'YourForm.Free' - 如果' YourForm'是一個局部變量,不需要釋放它,因爲它超出了範圍,不能在其他地方再次使用。如果你用相同的程序顯示它,並且釋放它,那麼它就沒有意義,並且會使代碼混亂。 :)另外請注意,我並沒有對它進行調低,但是對於一個顯而易見的新人來說,顯示糟糕代碼的帖子也無法提升。 –
@KenWhite - 謝謝你,我已經更新了代碼。 – Shambhala
+1。謝謝。 :) –
下面是一些樣板代碼,這表明modal window行爲德爾福:
procedure TMain.Button1Click(Sender: TObject);
var
Result: TModalResult;
begin
{ if Dialog is not in "auto-create forms" list - instantiate it }
if not Assigned(Dialog) then
Application.CreateForm(TDialog, Dialog);
{ MODAL forms are blocking input on per application level }
{ so the following call blocks until Dialog form closes }
Result := Dialog.ShowModal();
if IsPositiveResult(Result) then
begin
{ handle if user responds with OK, Yes, etc }
ShowMessage('Accepted');
end
else
begin
{ or handle Close, Cancel, No, ... }
ShowMessage('Cancelled');
end;
end;
獨立的對話結果被在Object Inspector分配按鈕控制的ModalResult
屬性來實現的。欲瞭解更多信息,請閱讀ShowModal
方法。
下面是DFM代碼相關件說明ModalResult屬性設置:
object btnOK: TButton
Caption = 'OK'
ModalResult = 1
end
object btnCancel: TButton
Caption = 'Cancel'
ModalResult = 2
end
- 1. 德爾福父窗體按鈕
- 2. 德爾福窗口失去焦點
- 3. 德爾福MDI創建子窗體
- 4. 德爾福模式窗體位置
- 5. 德爾福,可能使窗體模式只有特定的父窗體?
- 6. 德爾福 - 兒童窗體有父母的框架
- 7. 德爾福 - 終止阻塞的線程
- 8. 在德爾福棱鏡的相同窗口窗口中調用事件
- 9. 組織窗口在SDI德爾福申請
- 10. 在光標位置打開窗體,德爾福
- 11. 如何獲取飛濺窗體在德爾福超時
- 12. 德爾福 - 如何防止主窗體在另一個非模態窗體中捕獲TMemo中的擊鍵?
- 13. 德爾福:如何讓我自己的提示窗口?
- 14. 德爾福:檢測窗口移動的開始和結束
- 15. 德爾福XE2,VCL風格再現窗口辦理
- 16. 德爾福MDI - 處理打開/關閉/激活子窗體
- 17. 從德爾福兒童部門訪問主窗體
- 18. FMX窗體中的一個DLL(firemonkey /德爾福)
- 19. 德爾福OnDeactivate不工作從DLL文件的窗體
- 20. 德爾福如何強制主窗體滾動條可見
- 21. 德爾福接口實現
- 22. Visual Basic - 阻止窗口
- 23. 德爾福字體資源
- 24. 德爾福HID Delphi7和德爾福XE2
- 25. 德爾福v.Word - 如何從德爾福
- 26. jQuery iframe彈出窗口和父窗體
- 27. 的ActiveX德爾福阻塞線程VCL
- 28. 德爾福在Vista
- 29. 在德爾福7
- 30. 父窗口,子窗口的嵌套窗體和自動創建
請不要關閉這個問題。這是完全清楚的OP是在問什麼。正如顯而易見的upvotes和6個答案。 – Johan