我有一个带两个窗口的小应用程序。当我打开第二张表格时 - 首先是表格隐藏:
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;
这段代码不起作用......我怎么能这样做?
提前致谢:)
答案 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;