回答
尝试:
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