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

在MDICHILD中再開啟一個MDICHILD,必須將新開的FORM關閉

尚未結案
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-28 17:01:41 IP:211.20.xxx.xxx 未訂閱
FORM1為MDIFORM,FORM2和FORM3為MDICHILD FORM1開啟FORM2,而FORM2則開啟FORM3,如果要再使用FORM2,必須將FORM3關閉才可使用,可是在貴站看到的程式 IF FORM3=NIL THEN BEGIN FORM3:=TFORM3.Create(SELF); FORM3.Show; END ELSE FORM3.Show; 都是用SHOW來顯示FORM,用SHOWMODUAL則會有問題,請問有什麼辦法可以強迫一定 要關閉FORM3,才可以使用FORM2的方法.
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-28 17:17:15 IP:218.160.xxx.xxx 未訂閱
Hi sangya 您好: 可以只將Form3設成NormalForm, 並使用ShowModal的方式即可. 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-29 09:37:01 IP:211.76.xxx.xxx 未訂閱
抱歉,Miles 依據你的方法會出現Cannot make a visible window modal的錯誤訊息..
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-29 10:11:38 IP:147.8.xxx.xxx 未訂閱
procedure TForm2.FormActivate(Sender: TObject);
begin
    if Assigned(Form3) then
        Form3.Show;
end;
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-29 11:15:28 IP:218.32.xxx.xxx 未訂閱
william:程式撰寫如下 procedure TForm2.SpeedButton3Click(Sender: TObject); begin WITH TFORM3.Create(SELF) DO BEGIN TRY SHOWMODAL; FINALLY FREE; END; END; end; procedure TForm2.FormActivate(Sender: TObject); begin if Assigned(Form3) then Form3.Show; end; 還是會出現Cannot make a visible window modal的錯誤訊息
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-29 11:32:57 IP:147.8.xxx.xxx 未訂閱
Form2 & Form3 should be MDI child.
procedure TForm2.SpeedButton3Click(Sender: TObject);
begin   
    if not Assigned(Form3) then
        Form3 := TForm3.Create(self);
    Form3.Show;
end;    procedure TForm2.FormActivate(Sender: TObject);
begin
    if Assigned(Form3) then 
        Form3.Show;
end;
Free the form in Form3 using similar method in Form2. If you want to make Form3 a modal form, don't call ShowModal when Form3 is visible, use BringToFront (or do nothing) instead.
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-29 11:58:53 IP:218.32.xxx.xxx 未訂閱
嗯..william,你所說的方法看來是強迫form3一直留在最上方..可是這方法 仍然可以接觸到fom2,而且可以直接關閉form2,form3就也隨之關閉 但是如果直接關閉form2,然後再開啟form2,就會出現 access violation at address 00403f6 inf module 'project1.exe'. read of address 000000d1.的錯誤訊息
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-29 12:03:11 IP:147.8.xxx.xxx 未訂閱
What is the way you free Form2? In TForm2.OnCloseQuery, set CanClose to false if Form3 is visible.
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-29 13:19:32 IP:218.32.xxx.xxx 未訂閱
william,知道你所說的方法,最主要的問題是,是form3秀示出後,仍然可在form2 做動作,而且form2不是只有close的動作,還有其他的動作,例如button1為新增方法...這樣是否表示在form2都必須做判斷form3是否己經close掉?
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-04-29 14:09:41 IP:218.160.xxx.xxx 未訂閱
Hi sangya 您好: 只要先將Form3.Visible設為False即可 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-04-29 16:39:44 IP:218.190.xxx.xxx 未訂閱
引言:william,知道你所說的方法,最主要的問題是,是form3秀示出後,仍然可在form2 做動作,而且form2不是只有close的動作,還有其他的動作,例如button1為新增方法...這樣是否表示在form2都必須做判斷form3是否己經close掉?
You could. Or simply disable Form2 when Form3 is created and re-enable Form2 when Form3 is closed.
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-04-30 16:58:08 IP:218.32.xxx.xxx 未訂閱
william,thanks...
sangya
一般會員


發表:21
回覆:46
積分:13
註冊:2002-04-15

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-05-03 14:53:44 IP:211.23.xxx.xxx 未訂閱
william,thanks...
系統時間:2024-05-29 15:11:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!