delphi 窗體的建立和釋放

2021-08-13 19:02:48 字數 1633 閱讀 6608

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

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

[delphi]

view plain

copy

begin

modalform := tmodalform.

//動態建立窗體

trymodalform.

showmodal;

//顯示模式窗體

finally

modalform.

free; 

//釋放窗體例項

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

modalform := nil

; //把窗體變數設為nil

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

end;  

end;  

[delphi]

view plain

copy

begin

form1 := tform1.

form1.

show;  

end;  

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

[delphi]

view plain

copy

begin

ifnot

assigned(modallessform) 

then

//確保只建立乙個視窗

begin

modallessform := tmodallessform.

end;  

modallessform.

show;  

end;  

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

[delphi]

view plain

copy

procedure

tmodallessform

.formclose(sender: tobject;  

varaction: 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...