全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1451
推到 Plurk!
推到 Facebook!

請問一個關於FORM的觀念問題

尚未結案
sucm
一般會員


發表:24
回覆:29
積分:10
註冊:2005-01-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-07-10 15:16:15 IP:218.172.xxx.xxx 訂閱

請問各位大大.....

我CREAM 一個FORM1 之後將他showmodel....

我再用CLOSE將FORM1 關閉...

請問那麼我的FORM1 還是存在在記憶体裡面嗎...

那麼如果我想把他從記憶体中移除掉...該如何做呢(移除後...當我需要的時候還可以再CREAT出來)...

如果我沒把FORM1 從記憶体中移除..那我該如何知道FORM1 還存在呢...

煩請各位大大幫我解答一下...感恩

cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-07-10 15:56:36 IP:202.62.xxx.xxx 未訂閱

您好﹗

用Create方法建立的Form﹐其否用的記憶體是存在於堆(Heap)中﹐存在於堆中的記憶體占用不會自動釋放﹐而是需要手動釋放的﹐方法如下﹕

Form1.Free;

判斷Form1是否存在的方法如下﹕

if Form1 <> Nil then

ShowMesage('Form1存在');

------
忻晟
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-07-10 22:31:26 IP:218.18.xxx.xxx 未訂閱
你要充分理解 delphi 的 pascal 语法。

1. 你的 Form1 是在你的某个 pascal 单元 file ,比如 unit1.pas 里定义的一个全局的 var,它的类型,是这个 unit1 单元里定义个 TForm1 这个类型。

2. 你在另外一个单元里,比如 unit2 的 Form2 里, Create 这个 Form1,就是你的 unit1.pas 里定义的那个 var,一旦Create 它,它就存在于你的记忆体中。除非你 Free 它。

3. 其实,对于 TForm1 这个类型的东西,你完全可以在你的 unit2 单元里另外定义一个 var,比如: FMyForm: TForm1,然后,你可以 Create 这个 FMyForm,并且 show 它,然后 Free 它。如果不 Free 它,它也一直在你的记忆体里面。

4. TForm1 = class(TForm),因此,TForm1.Create(AOwner: TObject),它有个 AOwner 变数。通常用 Application 作为这个变数。如果是 Application 作为变数,那么,就算你不去 Free 它,当 Application 被干掉的时候,也会自动去 Free 它。


===================引 用 文 章===================

請問各位大大.....

我CREAM 一個FORM1 之後將他showmodel....

我再用CLOSE將FORM1 關閉...

請問那麼我的FORM1 還是存在在記憶体裡面嗎...

那麼如果我想把他從記憶体中移除掉...該如何做呢(移除後...當我需要的時候還可以再CREAT出來)...

如果我沒把FORM1 從記憶体中移除..那我該如何知道FORM1 還存在呢...

煩請各位大大幫我解答一下...感恩

TWJack
一般會員


發表:3
回覆:13
積分:3
註冊:2006-11-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-07-11 15:48:05 IP:59.104.xxx.xxx 未訂閱

你可以在Form.OnClose事件裡

action := cafree;

應該可以將 Form釋放掉

系統時間:2024-05-10 13:44:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!