2013-07-03 134 views
0

我有一個帶有兩個窗口的小應用程序。當我打開第二個窗體 - 第一個窗體隱藏:德爾福。顯示來自子窗口的父窗口

procedure TIndexForm.startButtonClick(Sender: TObject); 
begin 

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

end; 

但是,如果第二個窗口關閉 - 應用程序仍然runnig(是的)。但是,我想在第二個關閉時打開第一個窗口:

procedure TworkingForm.FormClose(Sender: TObject); 
begin 
    parent.Show(); 
end; 

而此代碼不工作......我該如何做到這一點?

在此先感謝:)

+0

一些建議。不要說「這段代碼不起作用」。告訴我們你期望會發生什麼,以及發生了什麼。如果有錯誤消息,請逐字包括它們。 –

回答

1

我想你已經使用了錯誤的事件。您似乎在顯示和隱藏表單。所以你想把活動附加到OnHide而不是OnClose

Parent上致電Show也是一個錯誤。 Windows控件的Parent是包含控件。例如,當您在面板中放置按鈕時,該按鈕的父級是面板。在你的情況下,你想在其他表格上撥打Show

1

我看到兩個問題。首先,這不是一個真正的OnClose事件處理程序。在Visual Basic中,只需在代碼中輸入名稱即可創建事件處理程序,但在Delphi中,它們的名稱無關緊要。他們需要連接到表單或控件的事件屬性,我可以告訴這個人沒有連接,因爲OnClose事件需要兩個參數,而不是一個參數。雙擊Object Inspector中的事件,讓IDE爲您生成一個具有正確參數的事件處理程序,並自動將其掛接到事件。

其次,您要顯示的表單不是Parent。這很明顯,因爲如果父窗口被隱藏,那麼所有的子窗口都是隱藏的。因此你的兩種形式沒有親子關係。

如果你想顯示其他形式,只要用你習慣把它藏在首位的同樣的技術:

IndexForm.Show; 
+0

對於使用'IndexForm.Show'方法,我需要添加第一個表單單元(因爲它不能從第二個單元中獲得),但是這個 - 內存不足錯誤。 –

+0

這個問題沒有任何內容與內存不足有關。這是一個完全獨立的問題。 –

0

在這個例子中父不分配給第一種形式。 您需要在執行使用條款或 中添加第一個表單的單元,調用類似 的Application.MainForm.Show;