在Delphi中阻止父窗体窗口

时间:2011-10-12 22:10:58

标签: forms delphi

我正在尝试创建一个显示两个窗体的简单应用程序。第一个,主窗体应该能够在单击底部时显示弹出窗体窗口。显示的第二个表单必须禁用主窗体的功能。

请为此示例显示一个简单的代码。

4 个答案:

答案 0 :(得分:7)

尝试:

procedure ShowModalForm()
var 
  newForm: TNewForm;
begin
  newForm := TNewForm.Create(nil);
  try
    newForm.ShowModal;
  finally
    newForm.Free;
  end;
end;

答案 1 :(得分:4)

实现此目的的最简单方法是以模态方式显示表单。调用ShowModal以显示表单,主表单不会被禁用,也无法接收任何输入。

答案 2 :(得分:4)

您可以创建它的另一种方式就是这样。

procedure TForm1.btnCreateFormClick(Sender: TObject);
var
   YourForm : TYourForm;
begin
  YourForm := TYourForm.Create(nil);
  try
    YourForm.ShowModal;
  finally
    YourForm.Free;
  end;
end;

答案 3 :(得分:0)

这是一些样板代码,用于演示Delphi中的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中分配按钮 control ModalResult属性来实现不同的对话框结果。有关更多信息,请参阅ShowModal方法。

以下是用于说明ModalResult属性设置的相关DFM代码:

  object btnOK: TButton
    Caption = 'OK'
    ModalResult = 1
  end
  object btnCancel: TButton
    Caption = 'Cancel'
    ModalResult = 2
  end