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

MID的程式如何自動把每個child Form 作分頁

答題得分者是:sryang
dino
一般會員


發表:20
回覆:73
積分:23
註冊:2002-07-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2009-01-24 16:23:41 IP:220.132.xxx.xxx 訂閱
MDI架構的AP,每次create 一個新的child Form 時
Form 會包進分頁裡面,也就是動態產生分頁把Form包進去
就像是Ultra Edit、google chrome 之類的程式一樣
每次按新增檔案或是新增網頁時都會用一個一個的分頁去顯示
我不知道delphi內建的元件是否可以達成
想用PageControl或是TabControl去做
http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=75071
上面這一篇是用C Builder寫的
改寫後失敗,可能是對C 的語法不熟的關係吧@@
code的重點如下:
TabControl1.Tabs.AddObject('form title',AForm);
//AForm是每一個動態create的child form的instance
分頁是可以自動產生了,但是無法把Form帶入到tab裡面顯示出來
在ktop搜尋了許多資料,沒有找到可以解決的方向
請各位先進前輩指導一下囉
感謝
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#2 引用回覆 回覆 發表時間:2009-01-24 21:01:26 IP:124.10.xxx.xxx 訂閱
提示:Parent
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
dino
一般會員


發表:20
回覆:73
積分:23
註冊:2002-07-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2009-01-25 11:52:21 IP:220.132.xxx.xxx 訂閱
sryang 兄說的parent
指的是不是 將每一個create 起來的child form.parent 指定成tabcontrol呢?
我是依照上面那篇問答裡面最後發問者提供的那個範例去做的
不過裡面沒有看到設定parent的地方
我也有用裡面前幾個回答者的範例去實作(裡面就有設定parent的地方)

最後那個範例的重點我看應該是下面兩個地方
2.// 這是在 Child Form 的 OnActivate 事件裡的 code, 這樣點選視窗時,Tab 也能跟著切換了
在每個child form 裡面也依樣畫葫蘆的加了

目前還是無法把form顯示在tab裡面,應該是很多地方都有錯誤
我的code也寫的蠻亂的,不具參考價值了
delphi 的sample也沒有範例,
我的疑問是tabcontrol可以成為form的parent嗎?
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#4 引用回覆 回覆 發表時間:2009-01-25 23:34:03 IP:124.10.xxx.xxx 訂閱
1. 沒錯,是設定 Form.Parent,不過不是設定為 TabControl,而是設定為 TabSheet
2. 那篇討論中,6 樓有提到設定 Parent
3. Parent 的型別,是 TWinControl,TTabSheet 不就是 TWinControl 的後代型別嗎?

===================引 用 dino 文 章===================
sryang 兄說的parent
指的是不是 將每一個create 起來的child form.parent 指定成tabcontrol呢?
我是依照上面那篇問答裡面最後發問者提供的那個範例去做的
不過裡面沒有看到設定parent的地方
我也有用裡面前幾個回答者的範例去實作(裡面就有設定parent的地方)

最後那個範例的重點我看應該是下面兩個地方
2.// 這是在 Child Form 的 OnActivate 事件裡的 code, 這樣點選視窗時,Tab 也能跟著切換了
在每個child form 裡面也依樣畫葫蘆的加了

目前還是無法把form顯示在tab裡面,應該是很多地方都有錯誤
我的code也寫的蠻亂的,不具參考價值了
delphi 的sample也沒有範例,
我的疑問是tabcontrol可以成為form的parent嗎?
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
dino
一般會員


發表:20
回覆:73
積分:23
註冊:2002-07-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2009-01-26 23:30:29 IP:220.132.xxx.xxx 訂閱
感謝 sryang 兄的提點
我把那篇討論的6樓範例程式實作了一遍
已經可以達成所要的效果了
程式重點如下:
// 新增頁籤
pPage := TcxTabSheet.Create(PageControl1);
pPage.PageControl := PageControl1;
pPage.Caption := ClassName;
pPage.Name := MyComponentName;
//create form
AForm := TComponentClass(AClass).Create(pPage) as TForm;
AForm.Parent := pPage;
AForm.Align := alClient;
AForm.BorderStyle := bsNone;
pPage.Caption := AForm.Caption;
............
AForm.Show;

不過有個問題正如那邊討論的版主所說的
不知道是Create form還是form show的時候, 畫面有閃爍一下的現象產生
還蠻嚴重的,不知道哪位先進前輩可以指教修正的方式...謝謝
dino
一般會員


發表:20
回覆:73
積分:23
註冊:2002-07-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-02-07 14:53:44 IP:220.132.xxx.xxx 訂閱
發現其實蠻簡單的
只要Form的Visible := false
在Parent 設為Tabsheet 之後
再Visible := true 就不會有閃爍的現象發生了
===================引 用 dino 文 章===================
感謝 sryang 兄的提點
我把那篇討論的6樓範例程式實作了一遍
已經可以達成所要的效果了
程式重點如下:
// 新增頁籤
pPage := TcxTabSheet.Create(PageControl1);
pPage.PageControl := PageControl1;
pPage.Caption := ClassName;
pPage.Name := MyComponentName;
//create form
AForm := TComponentClass(AClass).Create(pPage) as TForm;
AForm.Parent := pPage;
AForm.Align := alClient;
AForm.BorderStyle := bsNone;
pPage.Caption := AForm.Caption;
............
AForm.Show;

不過有個問題正如那邊討論的版主所說的
不知道是Create form還是form show的時候, 畫面有閃爍一下的現象產生
還蠻嚴重的,不知道哪位先進前輩可以指教修正的方式...謝謝
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-02-07 17:43:10 IP:124.10.xxx.xxx 訂閱
如果要把 Form.Visible := false
則 Form.FormStyle 必須是 fsNormal
FormStyle = fsMdiChild 時,是無法設定 Visible := false 的,會有錯誤訊息

這種用分頁來代替傳統 MDI 的作法,可以屏除傳統 MDI 一個子 form 放到最大,所有的子 form 都會放到最大
一個子 form 從最大回到一般大小,所有的子 form 都會從最大回到一般大小的缺點

===================引 用 dino 文 章===================
發現其實蠻簡單的
只要Form的Visible := false
在Parent 設為Tabsheet 之後
再Visible := true 就不會有閃爍的現象發生了
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
qtfox
一般會員


發表:0
回覆:1
積分:0
註冊:2009-02-10

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-02-10 01:35:00 IP:124.225.xxx.xxx 訂閱
 楼主 你解决了问题
能不能把你的这个例子代码共享啊或给我发一份 qtfox@163.com
谢谢
------
good
系統時間:2024-05-15 16:09:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!