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

可否將新開啟之表單置入在原表單中之一容器內

尚未結案
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-25 02:15:52 IP:61.59.xxx.xxx 未訂閱
是否可以在一表單(Form1)開啟另一個表單(Form2)時,將新開啟之表單(Form2) 置入在原表單(Form1)中之一容器內,如Panel.
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-25 08:08:27 IP:203.217.xxx.xxx 未訂閱
如下,將TForm2的BorderStyle設為bsNone
procedure TForm1.FormCreate(Sender: TObject);
begin
  with TForm2.create(self) do begin
    parent:=panel1;
    align:=alClient;
    show;
  end;
end;
banson1716
高階會員


發表:55
回覆:182
積分:167
註冊:2002-04-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-25 10:05:59 IP:61.223.xxx.xxx 未訂閱
在...\Borland\Delphi\Demos\Db\Gdsdemo 範例中有 inherited 的關係 參考看看
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-26 03:32:33 IP:211.74.xxx.xxx 未訂閱
我已下列方式,可以秀出來,但有些疑問,請幫我看一下 procedure TForm1.F4Click(Sender: TObject); begin IF Application.FindComponent('Form2')=nil then Application.CreateForm(TForm2, Form2 ); Form2.Parent := Panel7; Form2.SHOW; //Form2.SHOWMODAL; //-->可以秀出來,但不能SetFocus Form2.Edit2.SetFocus; end; 1.用Form.Show可以秀出來,但如用Form2.SHOWMODAL其焦點不會在該表單 2.當Form2關閉時,Form1也會跟著關閉
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-26 09:56:16 IP:203.217.xxx.xxx 未訂閱
Form2.showmodal Form2.Edit2.SetFocus//showmodal後之程式只有在form2結束後才會執行 這是不行的 Form2.showmodal後所有focus移到form2, 故form1暫時被disable, 然而form2在form1內, form1不能focus故其上之所有元件不能focus, 包含panel7上之form2
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-26 13:23:49 IP:218.187.xxx.xxx 未訂閱
1. 按照你目前的寫法當然不行,不過你想要達成的目的一定可以。 2. 你只要把你的寫法改良就可以達成了,請多試試。
Paicaso
中階會員


發表:140
回覆:124
積分:52
註冊:2002-09-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-01-26 14:47:52 IP:61.59.xxx.xxx 未訂閱
有關showmodal已了解,但為何關閉Form2時Form1也會跟著關閉?
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-01-26 20:16:49 IP:203.217.xxx.xxx 未訂閱
引言: 有關showmodal已了解,但為何關閉Form2時Form1也會跟著關閉?
procedure TForm1.F4Click(Sender: TObject);
begin
  IF Application.FindComponent('Form2')=nil then   
  Application.CreateForm(TForm2, Form2 );
  Form2.Parent := Panel7;
  Form2.SHOW;
  Form2.Edit2.SetFocus;
end;
照你程式如上, 關閉Form2時Form1並不會跟著關閉, 查看你form2上有什麼Event吧.
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-03-31 10:45:08 IP:211.76.xxx.xxx 未訂閱
引言: 我已下列方式,可以秀出來,但有些疑問,請幫我看一下 procedure TForm1.F4Click(Sender: TObject); begin IF Application.FindComponent('Form2')=nil then Application.CreateForm(TForm2, Form2 ); Form2.Parent := Panel7; Form2.SHOW; //Form2.SHOWMODAL; //-->可以秀出來,但不能SetFocus Form2.Edit2.SetFocus; end; 1.用Form.Show可以秀出來,但如用Form2.SHOWMODAL其焦點不會在該表單 2.當Form2關閉時,Form1也會跟著關閉
弟試了一下, 發現若是在 form2 上放了一個 bitbtn 其 kind 設為 bkClose 時, 會發生 paicasso 兄所說的 Form2 關閉時, Form1 也會跟著關閉, 推測 可能是該 bitbtn 在該 panel 上, 而 panel 又在 form1 上, 所以造成 form1 也隨之關閉.. 但若是使用自訂的 button 寫入 self.close; 就會正常 close form2 而 form1 不受影響. 另外, 弟在 Form2 的 onClose EVENT 中, 有放入了 action := cafree; 並設定中斷點試著 看該行執行的狀況. (先後已先將 create form2 的 owner 利用 form2 := TForm2.Create(Panel1); 或 form1 , 或是利用 application.createform 的方式將 form2 的 owner 設為 application 結果皆同.) 發現有以下幾種狀況: 1. 按下自訂的 button 中的 self.close; 將會正常的執行 form2 的 onclose event 2. 按下 bitbtn 來 close form2 時 (該 bitbtn 中的 onclick 沒有任何程式), 不會執行到 form2 的 onclose event 3. 按下 form1 右上角的 x 來關閉時, form2 的 onclose event 也不會觸發. 以上三種 case 無論 form2 的 owner 為 panel1, form1, 或是 application 都是一樣的, 所以是否會發生該 form2 若不是以第一種方式來 close 時, 將 會發生無法完全釋放的問題?
系統時間:2024-04-29 3:18:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!