線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:883
推到 Plurk!
推到 Facebook!

如何判斷動態視窗被開啟和消失?

尚未結案
stevenchiou
一般會員


發表:11
回覆:10
積分:4
註冊:2003-09-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-23 15:30:59 IP:61.220.xxx.xxx 未訂閱
假設Form2是在Form1生成的 如果我用在Form1 if(Form2 != NULL) { //更新Form2的資料 Form2->XXX=Form2->XXX(Form1->XXX); Form2->XXX=Form2->OOO(Form1->XXX); . . . } 在Form2關掉時(按Form2右上的X鍵)會有問題.
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-23 17:06:06 IP:211.23.xxx.xxx 未訂閱
你的問題是指什麼樣的問題? 這個狀況只有一個要注意, 就是 FORM2 在用右上的X鍵關掉時, 其實只是 HIDE, 而不會 FREE 掉, 所以 if(Form2 != NULL) 會一直成立. 事實上, 就算是 FORM2 在 ONCLOSE 中, 設定 Action=caFree , 真正在 FORM Free 掉, Form2 還是會不等於 NULL, 必需要 Form2 的 OnClose 中, 送一個 MESSAGE 給 Form1, 讓 Form1 知道 Form2 已經結束了, 設定 Form2=NULL . 希望這對解決你的問題有幫助!! ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
jessechan
版主


發表:109
回覆:394
積分:254
註冊:2002-04-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-23 17:06:43 IP:203.67.xxx.xxx 未訂閱
提供一個最簡單的方法, 在 Form1 設一個 bool 型態公用變數設為 false, 在 Form2 的 create event 中將其設為 true, 然後在 destructor 中將其設為 false 就可判斷是否存在.    Jesse Chan
------
Jesse Chan
stevenchiou
一般會員


發表:11
回覆:10
積分:4
註冊:2003-09-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-24 10:46:33 IP:61.220.xxx.xxx 未訂閱
aquarius 你好: 謝謝你的回應 void __fastcall TForm2::OnClose(TObject *Sender, TCloseAction &Action) { From2 = NULL;<----後來我在Form2的地方加上這一行就可以了 Action = caFree; } 也謝謝JesseChan
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-24 11:05:17 IP:211.23.xxx.xxx 未訂閱
引言: aquarius 你好: 謝謝你的回應 void __fastcall TForm2::OnClose(TObject *Sender, TCloseAction &Action) { From2 = NULL;<----後來我在Form2的地方加上這一行就可以了 Action = caFree; } 也謝謝JesseChan
我個人是不建議這樣使用. 因為在 OnClose 之後, 這個 Form2 仍有其他動作, 例如 OnDestroy , 在 OnClose 就把Form2 設為 NULL, 不知是否會有潛在的問題. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
系統時間:2024-05-10 19:02:08
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!