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

MDIform 与 MDIchild 之間的控制

答題得分者是:channel
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-22 12:55:32 IP:63.84.xxx.xxx 未訂閱
各位前輩﹒ 請問如何在MDI Form与MDIChild 的系統中﹐控制MDIChild Form的出現﹐小弟剛開啟MDIForm﹐其中的一個MDIChild Form也就跟著自動開啟了﹐請問該如何設定使其不自動開啟﹒ 關閉MDIChild Form的語法該如何寫﹐若使用Close只可將其最小化于MDI Form之中﹒﹒﹒請各位前輩指點﹒ 謝謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-22 13:05:58 IP:211.21.xxx.xxx 未訂閱
引言: 請問如何在MDI Form与MDIChild 的系統中﹐控制MDIChild Form的出現﹐小弟剛開啟MDIForm﹐其中的一個MDIChild Form也就跟著自動開啟了﹐請問該如何設定使其不自動開啟﹒
Delphi/Project/Options 將MDIChild Form從Auto create-forms移到Available forms思意是從自動到手動 開啟MDIChild Form的方法: 假設要開啟Form2則:
if not Assigned(Form2) then
  Form2 := TForm2.Create(Self);
Form2.Show;
引言: 關閉MDIChild Form的語法該如何寫﹐若使用Close只可將其最小化于MDI Form之中﹒﹒﹒請各位前輩指點﹒
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := CaFree;
end;
~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-22 14:18:29 IP:63.84.xxx.xxx 未訂閱
請問前輩﹒ if not Assigned(Form2) //為何意義﹖ 小弟另寫了這樣一段程式碼作為開啟MDIChild Form之用﹕ procedure TMain.N13Click(Sender: TObject); var PasswordChange :TPasswordChange; begin PasswordChange := TPasswordChange.Create(Application); PasswordChange.Show; end; 也可正常開啟﹐請問哪一種方法比較好﹒ 謝謝Channel前輩的指點﹒ 努力,相信會獲得美麗! 忻晟
------
忻晟
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-22 14:42:06 IP:211.21.xxx.xxx 未訂閱
引言: 請問前輩﹒ if not Assigned(Form2) //為何意義﹖ 小弟另寫了這樣一段程式碼作為開啟MDIChild Form之用﹕ procedure TMain.N13Click(Sender: TObject); var PasswordChange :TPasswordChange; begin PasswordChange := TPasswordChange.Create(Application); PasswordChange.Show; end; 也可正常開啟﹐請問哪一種方法比較好﹒ 謝謝Channel前輩的指點﹒ 努力,相信會獲得美麗! 忻晟
if not Assigned(Form2)是在判斷是否分配Mem給Form2,也就是判斷Form2是否已經開啟了。 如果您沒有加這一行的話Form2會被重複開啟 您試一下按兩N13Click,以您的寫法PasswordChange會被開啟兩次 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-22 15:07:25 IP:63.84.xxx.xxx 未訂閱
果然如前輩所述﹐用if not Assigned(PasswordChange)就不會重复開啟這個MDIChild Form了﹒謝謝指點﹗ 但小弟發現另外一個現象﹐就是將開啟的PasswordChange關閉后﹐再去點擊開啟PasswordChange的MainN13按鍵就沒有任何效果了﹐PasswordChange也不會被開啟﹐請問該如何解決﹖ 不甚感謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-22 16:04:30 IP:211.21.xxx.xxx 未訂閱
引言: 果然如前輩所述﹐用if not Assigned(PasswordChange)就不會重复開啟這個MDIChild Form了﹒謝謝指點﹗ 但小弟發現另外一個現象﹐就是將開啟的PasswordChange關閉后﹐再去點擊開啟PasswordChange的MainN13按鍵就沒有任何效果了﹐PasswordChange也不會被開啟﹐請問該如何解決﹖ 不甚感謝﹗ 努力,相信會獲得美麗! 忻晟
procedure TMain.N13Click(Sender: TObject);
您又宣告一個Local的PasswordChange基本上已經uses TPasswordChange這個unit
就不能再宣告一個Local的變數,因為PasswordChange已經宣告在TPasswordChange這個unit裏面
//var
 //PasswordChange :TPasswordChange;    begin
  if not Assinged(PasswordChange) then
    PasswordChange := TPasswordChange.Create(Application);
  PasswordChange.Show;
end;
另外,小弟忘了還要在MDIChild加一段程式:
procedure TPasswordChange.FormDestroy(Sender: TObject);
begin
  PasswordChange := nil;//釋放Mem
end;
這樣應該就沒有問題了 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-22 16:22:00 IP:63.84.xxx.xxx 未訂閱
感恩了﹐Channel前輩﹐問題已解決﹗ 再加問一句﹐PasswordChange := TPasswordChange.Create(Application); 和PasswordChange := TPasswordChange.Create(Self); 有何區別﹐小弟將兩種皆試過﹐都可使用﹐不明白有何區別﹐請前輩指點﹒ 感謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
channel
尊榮會員


發表:67
回覆:707
積分:854
註冊:2002-05-02

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-22 16:44:39 IP:211.21.xxx.xxx 未訂閱
引言: 感恩了﹐Channel前輩﹐問題已解決﹗ 再加問一句﹐PasswordChange := TPasswordChange.Create(Application); 和PasswordChange := TPasswordChange.Create(Self); 有何區別﹐小弟將兩種皆試過﹐都可使用﹐不明白有何區別﹐請前輩指點﹒ 感謝﹗ 努力,相信會獲得美麗! 忻晟
Create後面接的參數是指擁有者,Application是指整個應用程式是一個global variable,而Self是指所在Form本身,以您的例應該是指MainForm、呼叫者(不是指PasswordChange),兩者的差別應該是生命週期不同而已,但在您的例子中應該都是一樣的,因為MainForm離開後,應用程式也結束了。這是我的想法,若有不對,請各位Delphi高手、前輩訂正.... ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-05-22 16:57:16 IP:63.84.xxx.xxx 未訂閱
嗯嗯﹒﹒﹒ 似乎了解其中的意義﹐要再去找一些這方面的資料參考﹒    感恩前輩不吝賜教﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-05-16 9:16:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!