如何在Delphi中退出时显示最终表格?

lke*_*ler 2 forms delphi exit-code

对于某人来说,这应该是一个简单的.我只是想不出怎么做.

退出我的程序后,我想隐藏主表单并自行显示最终的"谢谢"表单,如下所示:

procedure TMainForm.ExitExecute(Sender: TObject);
begin
  MainForm.Visible := false;
  ThankYouForm.Show;
  MainForm.Close;
end;
Run Code Online (Sandbox Code Playgroud)

但是当我这样做时,我得到了例外:

EInvalid操作:无法在OnShow或OnHide中更改Visible

那么如何在退出Delphi中的程序时隐藏主窗体时如何显示最终窗体?


结论:Mghie证实我所尝试的是正确的,应该有效.这表明我在退出和关闭我的表单的程序中的某个地方出现了一个错误.

现在我知道了,找到并解决问题并不需要花很长时间.


发现问题:我正在从ThankYouForm中关闭我的主要表单,并以某种方式回到ExitExecute,并且,它完全被束缚了.

但一切都很好.ThankYouForm.ShowModal之前的MainForm.Hide工作正常.

伙计们,再次感谢

Rob*_*edy 12

而不是试图将东西塞进主要形式,去你知道其他一切已经完成的地方:Application.Run返回的地方.创建一个创建,显示和销毁告别表单的新过程,然后在DPR文件中调用它,如下所示:

begin
  Application.Initialize;
  Application.CreateForm(TMainForm, MainForm);
  Application.Run;
  TThankYouForm.Execute;
end.
Run Code Online (Sandbox Code Playgroud)

显示功能可以与Mghie的答案所展示的一致:

class procedure TThankYouForm.Execute;
begin
  with Create(nil) do try
    ShowModal;
  finally
    Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)