德尔福。从孩子显示父窗口

时间:2013-07-03 09:24:35

标签: windows forms delphi

我有一个带两个窗口的小应用程序。当我打开第二张表格时 - 首先是表格隐藏:

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;

这段代码不起作用......我怎么能这样做?

提前致谢:)

3 个答案:

答案 0 :(得分:1)

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

Show上拨打Parent也是错误的。 Windows控件的Parent是否包含控件。例如,当您在面板中放置按钮时,按钮的父级是面板。在你的情况下,你想在另一个表格上打电话给Show

答案 1 :(得分:1)

我看到两个问题。首先,那不是真正的OnClose事件处理程序。在Visual Basic中,您可以通过在代码中键入其名称来创建事件处理程序,但在Delphi中,它们的名称无关紧要。它们需要连接到窗体或控件的事件属性,我可以告诉它没有连接,因为OnClose事件需要两个参数,而不是一个。双击Object Inspector中的事件,让IDE为您生成带有正确参数的事件处理程序,并自动将其挂钩到事件中。

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

如果您想要显示其他表单,请首先使用您用于隐藏它的相同技术:

IndexForm.Show;

答案 2 :(得分:0)

在此示例中,Parent未分配给第一个表单。 您需要在implementation uses子句中添加第一个表单单元或 打电话给像 Application.MainForm.Show;