delphi 窗體的建立和釋放

2022-01-13 13:41:09 字數 1213 閱讀 5759

delphi中的窗體分為模式窗體和無模式窗體。二者的區別在於,使用者可以在無模式窗體和其他窗體之間切換。這樣,使用者就可以同時工作於乙個應用程式的幾個部分。delphi中窗體的初始化有兩種情況,動態建立,和自動建立。通過show顯示乙個無模式窗體,showmodal顯示乙個模式窗體。窗體有建立對應的也要考慮釋放問題。當關閉乙個窗體時,窗體並沒有真正從記憶體中釋放掉,它仍然存在於記憶體中,除非關閉了主窗體。因為模式窗體於無模式窗體的不同,所以二者的釋放處理也有不同。

因為模式窗體可以判斷什麼時候關閉窗體,可以用一下**來建立和釋放窗體。

begin

trymodalform.showmodal;//顯示模式窗體

finally

modalform.free; //釋放窗體例項

//showmessage(booltostr(modalform = nil));

modalform := nil; //把窗體變數設為nil

//showmessage(booltostr(modalform = nil));

end;

end;

begin

form1.show;

end;

用上述**會導致每次都建立窗體例項,從而消耗了大量的記憶體。我們可以考慮讓窗體只建立一次,同時在窗體關閉的時候將釋放掉。

begin

if not assigned(modallessform) then //確保只建立乙個視窗

begin

end;

modallessform.show;

end;

以上**就是乙個單例模式,確保只建立一次。當關閉窗體後,如果希望在記憶體中釋放掉,就要處理器onclose事件,吧action設為cafree,同時還要在ondestroy事件中將窗體變數指向nil。

procedure tmodallessform.formclose(sender: tobject;

var action: tcloseaction);

begin

action := cafree; //當關閉視窗時釋放窗體

end;

procedure tmodallessform.fomdestroy(sender: tobject);

begin

modallessform := nil; //在視窗銷毀時,把modallessform變數設為nil

end;

delphi 窗體的建立和釋放

delphi中的窗體分為模式窗體和無模式窗體。二者的區別在於,使用者可以在無模式窗體和其他窗體之間切換。這樣,使用者就可以同時工作於乙個應用程式的幾個部分。delphi中窗體的初始化有兩種情況,動態建立,和自動建立。通過show顯示乙個無模式窗體,showmodal顯示乙個模式窗體。窗體有建立對應的...

delphi 窗體的釋放

關於窗體的釋放 close 方法是將窗體隱藏,即form.hide 釋放窗體或是控制項的標準用法是form.free,其實free方法只是呼叫了destroy 方法,在窗體不為nil時進行資源的釋放,但並不將窗體例項置為nil,只有窗體例項沒有創始化之前值才為nil,否則你要顯示的將窗體例項置為ni...

物件的建立和釋放

1 new和delete基本語法 1 new和delete基本語法 1 在軟體開發過程中,常常需要動態地分配和撤銷記憶體空間,例如對動態鍊錶中結點的插入與刪除。在c語言中是利用庫函式malloc和free來分配和撤銷記憶體空間的。c 提供了較簡便而功能較強的運算子new和delete來取代mallo...