關於表單建立的問題Create() |
答題得分者是:ccchen
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
請問以下兩種建立方式,
為什麼我用方法二時會錯誤
我的Form2是放在Available Forms中(project/option form頁面 右邊) 方法一:
with TForm2.Create(self) do
try
showModal;
finally
Free;
end; 方法二:
TForm2.create(self);
Form2.ShowModal; ----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
你在你的Unit2.pas中應可看到一行
var Form2:TForm2;
TForm2是一個類別, form2則是一個Global變數,只占4byte.
TForm2.create(self);
用TForm2之類別Create了一個物件, 並未將此物件assign給任何變數
Form2.ShowModal;
Form2這個變數並未定義 1. 改成
form2:=TForm2.create(self);
Form2.ShowModal;
就不會有錯誤訊息了 2. 但form2未free, 雖parent free時會一起free, 但總是不可靠
故
form2:=TForm2.create(self);
Form2.ShowModal;
from2.free; 3. 為確保在任何Error, Form2也能free,故
form2:=TForm2.create(self);
try
Form2.ShowModal;
finally
from2.free;
end; 4. 用個with包起來, 省略變數名稱, 就變成你的方法一了 所以兩個方法是同一種, 只是一個完整, 一個不完整
|
a123473119
一般會員 發表:19 回覆:46 積分:18 註冊:2002-08-08 發送簡訊給我 |
|
skurama
中階會員 發表:88 回覆:127 積分:73 註冊:2002-07-22 發送簡訊給我 |
改成這樣就可以了!!
try
form1.showmodal;
finally
form1.free;
end; 改成有showmodal就可了,
因為show只是把form給顯示出來,
所以Form一show出後,此命令就結果了,
然後就去執行Free的動做。
而Showmodal則會讓此Form顯示在所有的Form最上方,
也就是除非此表單結束,或有其他的Form在showmodal,
不然無法換到其他的Form。
因此,如果你沒有結束此Form,他都會一直停在Form1.showmodal
而當Form1被Close時,則會做Finally的動做,也就是去做Free。 ----------------
初出芧房程設師,
左鍵右鼠寫程式,
日扣夜寫眼框溼,
望能早成系分師。
----------------
------
---------------- 初出芧房程設師, 左鍵右鼠寫程式, 日扣夜寫眼框溼, 望能早成系分師。 ---------------- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |