Windows 德尔菲。从子窗口显示父窗口

Windows 德尔菲。从子窗口显示父窗口,windows,forms,delphi,Windows,Forms,Delphi,我有一个带有两个窗口的小应用程序。当我打开第二个窗体时-第一个窗体将隐藏: procedure TIndexForm.startButtonClick(Sender: TObject); begin workingForm.Show(); // show second form IndexForm.Hide(); // hide first form end; 但若第二个窗口关闭,应用程序仍在运行(没错)。但是,我想在第二个窗口关闭时打开第一个窗口: procedure Twork

我有一个带有两个窗口的小应用程序。当我打开第二个窗体时-第一个窗体将隐藏:

procedure TIndexForm.startButtonClick(Sender: TObject);
begin

  workingForm.Show(); // show second form
  IndexForm.Hide(); // hide first form

end;
但若第二个窗口关闭,应用程序仍在运行(没错)。但是,我想在第二个窗口关闭时打开第一个窗口:

procedure TworkingForm.FormClose(Sender: TObject);
begin
  parent.Show();
end;
这个代码不起作用。。。我怎么能做到


提前感谢:)

我认为您使用了错误的事件。您似乎正在显示和隐藏窗体。因此,您希望将事件附加到
OnHide
而不是
OnClose


Parent
上调用
Show
也是一个错误。windows控件的父控件是它所包含的控件。例如,将按钮放置在面板中时,按钮的父级是面板。在您的情况下,您需要在另一个窗体上调用
Show

我看到两个问题。首先,这不是一个真正的
OnClose
事件处理程序。在VisualBasic中,您可以通过在代码中键入事件处理程序的名称来创建它们,但在Delphi中,它们的名称是不相关的。它们需要连接到窗体或控件的event属性,我可以看出这一个没有连接,因为
OnClose
事件需要两个参数,而不是一个。双击对象检查器中的事件,让IDE为您生成具有正确参数的事件处理程序,并自动将其挂接到事件

其次,要显示的表单不是
Parent
。这是显而易见的,因为如果父窗口被隐藏,那么它的所有子窗口也是隐藏的。因此,您的两个表单没有父子关系

如果要显示另一个窗体,只需使用最初隐藏该窗体时使用的相同技术:

IndexForm.Show;

在此示例中,未将父项指定给第一个表单。 您需要在实现uses子句或 打电话给
Application.MainForm.Show

对于使用
IndexForm.Show
方法,我需要添加第一个表单单元(因为它不能从第二个单元中获得),但是这个-内存不足错误..这个问题与内存不足无关。这是一个完全不同的问题。一些建议。不要说“这个代码不起作用”。告诉我们你期望发生什么,以及实际发生了什么。如果有错误消息,请逐字记录。