從Form1中動態Create Form2 |
答題得分者是:Chance36
|
iamjsn
初階會員 ![]() ![]() 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
|
Chance36
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
|
iamjsn
初階會員 ![]() ![]() 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
當然我也是想自已從form1做FREE FORM2,不過form2視窗有一個關閉視窗的按鈕,而我在form2的FormClose也加了Action:=cafree;
procedure form2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=cafree; end;像上面這種情形,如果樓在form1.FormDestroy去free form2 這時form2可能有下列兩種情況 form2已經被關閉(先按form2的關閉視窗按鈕,才去關form1) form2尚未關閉(直接按form1的關閉視窗按鈕,沒先關閉form2) 因為var Form2:TForm2;是宣告在FORM2的單元 不知這時要如何判定form2是否已經被關閉了呢? 因為如果是先手動關閉form2才關form1,這時在form1.FormDestroy裏去檢查form2變數,會發現它無法存取 procedure Tform1.FormDestroy(Sender: TObject); begin //這邊不知如何判斷form2是否已經被關閉 //本來用assigned(form2),但判斷不出來 //還請指點,謝謝 |
hahalin
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:295 回覆:1698 積分:823 註冊:2002-04-14 發送簡訊給我 |
|
iamjsn
初階會員 ![]() ![]() 發表:78 回覆:95 積分:44 註冊:2002-08-16 發送簡訊給我 |
自已試了一下,發現只要在下面多加一行form2:=nil;在form1用assigned判斷就不會有問題了
procedure form2.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=cafree; form2:=nil; end; ////////////////////////////// procedure form1.FormDestroy(Sender: TObject); begin if assigned(from2) then from2.Free; end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |