我正在尝试创建一个简单的应用程序,显示两个表单窗口。第一个主要窗体应该能够在点击底部按钮时显示一个弹出式表单窗口。显示的第二个窗体必须禁用主窗体的功能。
请提供这个示例的简单代码。
请提供这个示例的简单代码。
尝试:
procedure ShowModalForm()
var
newForm: TNewForm;
begin
newForm := TNewForm.Create(nil);
try
newForm.ShowModal;
finally
newForm.Free;
end;
end;
Application
作为所有者不必要地赋值,而模态窗体可能会立即释放,并且没有try..finally确保在使用后将其释放。)对于一个明显的初学者来说,这是一个糟糕的示例。 :) - Ken WhiteCreate
中的空参数,这将无法编译)。+1。David将不得不回答你提出的问题(但可能不会)。 - Ken Whiteprocedure TForm1.btnCreateFormClick(Sender: TObject);
var
YourForm : TYourForm;
begin
YourForm := TYourForm.Create(nil);
try
YourForm.ShowModal;
finally
YourForm.Free;
end;
end;
这里有一些样板代码,展示了Delphi中模态窗口的行为:
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;
通过在对象检查器中分配按钮控件的ModalResult
属性,可以实现不同的对话框结果。有关更多信息,请阅读ShowModal
方法。
以下是相关的 DFM 代码片段,以说明 ModalResult 属性设置:
object btnOK: TButton
Caption = 'OK'
ModalResult = 1
end
object btnCancel: TButton
Caption = 'Cancel'
ModalResult = 2
end