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

急問--有關MDI child 的關閉問題

答題得分者是:ha0009
dedo
一般會員


發表:13
回覆:16
積分:5
註冊:2003-11-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-22 02:34:47 IP:61.216.xxx.xxx 未訂閱
請問各位 若我設計好了一些Form,設為 fsMDIchild 型態,並於MDI裡點選某按鈕時去呼叫建立這些Form,但是,卻發生這些child Form 的視窗 "x" 按鈕關不掉這些子視窗了,而變成最小化.... 我知道這好像是MDI原本的問題,需用程式解決,我在某份文件裡看到如下: As you know by now, when you try to close an MDI child form, the form only gets minimized. You are however, able to set the Action parameter of the OnClose event method to caFree to really close it; or even set to caNone - to "mark" that the form cannot be closed.     procedure TMDIChild.FormClose(Sender: TObject; var Action: TCloseAction); begin   Action:=caNone; end;    但我不知道要怎麼把這個程序寫進程式裡..我程式裡呼叫Form的方式如下:  寫好一個叫Form1的 (1)先 use  (2)若點選某按鈕時,再 Application.CreateForm(TForm1,Form1);    對不起,我是新手~~~感激大伙的幫忙  
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-22 04:18:04 IP:61.56.xxx.xxx 未訂閱
你好: 在 Form 的 OnClose 事件中設定 Action 變數。 caNone         不作任何回應。 caHide         MDI Form 不允許使用這個參數。 caFree 將視窗釋放。 caMinimize 將視窗縮小。
dedo
一般會員


發表:13
回覆:16
積分:5
註冊:2003-11-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-22 13:56:16 IP:61.216.xxx.xxx 未訂閱
你好 我在Form1的onClose事件裡加上FormClose程序如下: procedure TF1Form.FormClose(Sender:TObject;var Action:TCloseAction); begin    Action:=caFree; end;    則在MDI第一次點按鈕開啟Form1後,的確按"x"已可關掉,但第二次再點這個按鈕時,卻出現如下錯誤訊息: Project MDIAPP.exe raised exception class EAccessViolation with  message 'Access violation at address 004034C0 in  module 'MDIAPP.exe'. Read of address 00000027'. Proccess stopped. Use Step or Run to continue.    然後程式就不能再run了,得全部關掉重開...為什麼會這樣  
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-22 14:46:13 IP:61.56.xxx.xxx 未訂閱
你好:
  caFree 是將視窗釋放,既然釋放,你就必須重新 Create 一個實體。所以你可以做下列的處理。    1. 在 OnClose 中
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
  Form2 := nil;
end;    2. 在呼叫的按鈕中
procedure TForm1.Button1Click(Sender: TObject);
begin
  if Form2 = nil then begin
    Form2 := TForm2.Create(Self);
  end;
  Form2.Show;
end;
dedo
一般會員


發表:13
回覆:16
積分:5
註冊:2003-11-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-22 16:00:42 IP:61.216.xxx.xxx 未訂閱
你好 太感謝你了  我的問題已經順利解決了  謝謝   可以請問一下
ha0009
版主


發表:16
回覆:507
積分:639
註冊:2002-03-16

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-22 16:16:03 IP:61.56.xxx.xxx 未訂閱
你好: Nil 是指標的一種狀態,代表指標變數尚未使用。實際上就是把指標變數設為 0.    切記善用 KTop搜尋
系統時間:2024-05-18 12:56:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!