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

如何使MDIChild Form做到Showmodal的功能

尚未結案
cashxin2002
版主


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-05-22 18:06:01 IP:63.84.xxx.xxx 未訂閱
請問各位前輩﹒ 該如何使用MDIChild Form在MDIForm中做到如同Showmodal的功能﹐也就是說當前MDIChild未關閉前不能切換或找開其它的MDIChild Form﹒ 謝謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
channel
尊榮會員


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-05-22 18:16:10 IP:211.21.xxx.xxx 未訂閱
引言: 請問各位前輩﹒ 該如何使用MDIChild Form在MDIForm中做到如同Showmodal的功能﹐也就是說當前MDIChild未關閉前不能切換或找開其它的MDIChild Form﹒ 謝謝﹗ 努力,相信會獲得美麗! 忻晟
那您就用SDI的方式就可以了,基本上MDI與SDI可以混著使用。 [補充]SDI就是一次僅開一個Form,方法如下: FormStyle設為fsNormal,開啟時用:
Application.CreateForm(TForm2, Form2);與Form2 := TForm2.Create(Application);相同
with Form2 do
try
  ShowModal;
finally
  Free;
end;
~小弟淺見,參考看看~ 發表人 - channel 於 2003/05/22 18:20:50
------
~小弟淺見,參考看看~
cashxin2002
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-05-22 18:35:07 IP:63.84.xxx.xxx 未訂閱
謝謝前輩的解答﹒ 但小弟在Run的時候﹐一旦在打開此Form時﹐就會出現"Cannot make a visible window modal."的出錯信息﹒另外﹐如果將FormStyle設為fsNormal﹐但此Form就不是MDIChild Form了﹐那還能繼續在MDIForm的視窗范圍中動作嗎﹖ 以下是小弟的程式碼. procedure TMain.N13Click(Sender: TObject); begin if not Assigned(Passwordchange) then Passwordchange := TPasswordchange.Create(Application); With Passwordchange do try ShowModal; finally free; end; end; 謝謝﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
channel
尊榮會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-05-22 18:49:04 IP:211.21.xxx.xxx 未訂閱
引言: 謝謝前輩的解答﹒ 但小弟在Run的時候﹐一旦在打開此Form時﹐就會出現"Cannot make a visible window modal."的出錯信息﹒
這是因為您原本將FormStyle設為fsMDIChild此時Form屬性中的Visible由False設為True,但是您又將FormStyle設為fsNormal,此時Delphi並未將Visible由True設為False,所有您只要將Visible設為False即可。
引言: 另外﹐如果將FormStyle設為fsNormal﹐但此Form就不是MDIChild Form了﹐那還能繼續在MDIForm的視窗范圍中動作嗎﹖
沒有問題,您可以試試看就知道了 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
todayZhang
一般會員


發表:9
回覆:14
積分:4
註冊:2003-05-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-05-22 20:33:34 IP:218.13.xxx.xxx 未訂閱
可以动太设置FORM的FormStyle: Passwordchange.FormStyle:=fsNormal; 但delphi不建议这样做
cashxin2002
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-05-23 09:10:54 IP:63.84.xxx.xxx 未訂閱
謝謝前輩解答﹒ 小弟將Passwordchange的visible屬性改為True之后﹐即可正常以ShowModal模式來顯示此Form了﹐但已經失去了MDIChild Form的意義﹐因為此Form為單獨的﹐并不包含于MDI Form中﹐比如說最大化時﹐Passwordchange就直接越出MDI Form的范圍﹐并不理會MDI Form的大小﹒ 請問該如何解決﹖ 感激﹗ 努力,相信會獲得美麗! 忻晟
------
忻晟
channel
尊榮會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-05-23 09:45:50 IP:211.21.xxx.xxx 未訂閱
引言: 謝謝前輩解答﹒ 小弟將Passwordchange的visible屬性改為True之后﹐即可正常以ShowModal模式來顯示此Form了﹐但已經失去了MDIChild Form的意義﹐因為此Form為單獨的﹐并不包含于MDI Form中﹐比如說最大化時﹐Passwordchange就直接越出MDI Form的范圍﹐并不理會MDI Form的大小﹒ 請問該如何解決﹖ 感激﹗ 努力,相信會獲得美麗! 忻晟
小弟個人認為,魚與熊掌不能兼得,MDI與SDI各有其功用,但無法像您說一樣,要有MDI的功能又要有SDI的功能,您必須捨其一。不過依您的需求,小弟我會建議這麼做:使用SDI,將最大化的功能拿掉:Form屬性中的BorderIcons/biMaximize設為False,Position設為poScreenCenter,這樣可能比較符合您的需求。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~
cashxin2002
版主


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-05-23 09:52:49 IP:63.84.xxx.xxx 未訂閱
感恩前輩的指點﹒ 努力,相信會獲得美麗! 忻晟
------
忻晟
系統時間:2024-06-27 1:01:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!