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

怎樣用程式關閉Modal Window

尚未結案
mier_tt
一般會員


發表:18
回覆:43
積分:12
註冊:2004-12-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-22 13:23:04 IP:218.14.xxx.xxx 未訂閱
各位大大好:     請問一下怎樣用程式實現關閉由ShowModal()Show出的Window,麻煩各位了,
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-22 17:24:16 IP:203.69.xxx.xxx 未訂閱
假設 Form2->ShowModal(); 只要在Form2內你的程式碼做完之後加一行 Close(); 就可以了關閉 Form2 了.... 發表人 - malanlk 於 2005/08/22 17:37:33
mier_tt
一般會員


發表:18
回覆:43
積分:12
註冊:2004-12-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-08-23 09:11:23 IP:218.14.xxx.xxx 未訂閱
謝謝大大的回應,但是我這個Form不是Auto-Create的,所以用Close好像不行呀,產生這個Form的程式碼 TForm2 *Form2; Form2=new TForm2(Application); Form2->ShowModal(); delete Form2; Form2=NULL; 我會在Form3的Button的Click事件裏想讓Form2關閉,隱藏也是可以的。 麻煩大大了。
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-08-23 10:24:02 IP:203.69.xxx.xxx 未訂閱
Form2 是 ShowModal, 請問一下 Form3 是由 Form2 產生的吧? Form3 也是 ShowModal 的嗎?
mier_tt
一般會員


發表:18
回覆:43
積分:12
註冊:2004-12-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-08-23 11:30:37 IP:218.14.xxx.xxx 未訂閱
是的,大大,Form3 是由 Form2 產生的,Form3 也是 ShowModal 的,那有什麽解決之道嗎,謝謝大大!
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-08-23 12:51:24 IP:203.69.xxx.xxx 未訂閱
Form3 是在 Form2.ShowModal 產生的 那一定要 Form3 先關閉才有可能 關閉 Form2. 
  TForm3 *Form3;
  Form3=new TForm3(Application);
  Form3->ShowModal();
  delete Form3;
  Form3=NULL;
  Close();
這樣在 Form3 關閉後就會將 Form2 順便關閉了.
mier_tt
一般會員


發表:18
回覆:43
積分:12
註冊:2004-12-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-08-23 13:23:29 IP:218.14.xxx.xxx 未訂閱
謝謝大大,我先試試看。
mier_tt
一般會員


發表:18
回覆:43
積分:12
註冊:2004-12-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-08-23 13:31:12 IP:218.14.xxx.xxx 未訂閱
我想再問一下,如果我又ShowModal而引出了Form4,Form5, 甚至更多,那是不是要到最後一個Form出現,再關閉它,以前產生的一些Form才能Close,如果我想每次出現的Form個數只有一個,有什麽方法呢?還要繼續麻煩您。 PS:我有試過用Show,但是Form一閃就消失了。
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-08-23 14:45:00 IP:203.69.xxx.xxx 未訂閱
Form2,Form3 都加入 OnClose event
void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
  Action=caFree; 
}
//------------------------------------
void __fastcall TForm3::FormClose(TObject *Sender, TCloseAction &Action)
{
  Action=caFree; 
}
呼叫時改為
  TForm2 *Form2;
  Form2=new TForm2(Application);
  Form2->Show();
//-----------------------
  TForm3 *Form3;
  Form3=new TForm3(Application);
  Form3->Show();
因為你設定 Action = caFree; 所以視窗關閉後會自動 Free;
系統時間:2024-05-09 9:18:46
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!