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

Panel 為 parent 動態 New 一個 TForm 為 Client 畫面有問題

 
kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-08-23 04:55:01 IP:220.138.xxx.xxx 未訂閱

請問高手喔!我的主畫面中分割安排數個 TPanel,然後在其中一個 TPanel 上,把這個 Panel 指定給 Form 當作 Parent.結果是當有視窗在我的程式上移動蓋過這個 form後,就像橡皮擦一樣畫面不會更新,(註:這個 Form 上我是當畫布用,上面動態以 Canvas 畫了一些資料庫的圖表而沒有用到 BCB的元件,是否有關?

TForm2 *Form2;

Form2 = new TForm2(Panel1);

Form2->Parent = (TPanel*)Panel1;

Form2->Show();

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-08-23 17:48:27 IP:61.229.xxx.xxx 未訂閱

要把畫圖的function寫在 form2的onPaint裡,這樣當別人的windows蓋到時才會自動的更新!


你也許又會問…我是想要在按下某button後才開始把某些資料計算後開始畫…那就請你把那些資料所需的欄位設定在form2的public上,然後在form1按button時更新form2的那些欄位,接著再使用form2->Invalidate();這個指令讓form2強迫自己更新自己。

也許你又會問…那我不要一run application就馬上畫圖…那就請你在fom2的欄位上再加一個bool的欄位,然後設定初始值為false,然後在onpaint上用if來判別這個值。而當form1的button按下後在invaildate之前把這個bool設成true。

我能想到你可能問的都回了

===================引 用 文 章===================

請問高手喔!我的主畫面中分割安排數個 TPanel,然後在其中一個 TPanel 上,把這個 Panel 指定給 Form 當作 Parent.結果是當有視窗在我的程式上移動蓋過這個 form後,就像橡皮擦一樣畫面不會更新,(註:這個 Form 上我是當畫布用,上面動態以 Canvas 畫了一些資料庫的圖表而沒有用到 BCB的元件,是否有關?

TForm2 *Form2;

Form2 = new TForm2(Panel1);

Form2->Parent = (TPanel*)Panel1;

Form2->Show();

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
kenlee1109
初階會員


發表:20
回覆:40
積分:27
註冊:2006-08-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-08-23 20:26:43 IP:220.138.xxx.xxx 未訂閱

小弟更正一下問題.

Panel ->Form1 ->Form2.

Form1的 parent 是 panel.

Form2 的 parent 是 Form1.

為什麼這樣做呢?是因為 Form2 是一張大白紙讓我畫圖,而捲軸的行為在 Form1上, Panel 是主視窗一個 PageControl 中的 Client 屬性.這樣,我的 Form2 就可以畫關係圖了.

本以 TFrame 為 Form1的角色,結果發現 Frame 內所包的 Form 大小受限太多,而有 Canvas 與 KEY MOUSE message 完整者大概就是 TForm 了.唉! Builder 元件太粗慥了.

現 Form2 當有視窗或對話盒在上面移動或拖動時, Form2 就像被擦掉般又不懂更新,問題ㄚ!

aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-08-23 23:53:58 IP:61.229.xxx.xxx 未訂閱

了解你所說的Panel ->Form1 ->Form2的狀況了。
可是就我所了解,當某一個form,無論是誰在誰的上面,若無法更新都是因為畫圖的程序非寫在onpaint上。以你這個例子來說,你的畫圖程序是寫在Form2的onpaint 事件上嗎?? 我想先確認這個問題!

另外,除了Form外,可以考慮的還有PaintBox這個元件。


===================引 用 文 章===================

小弟更正一下問題.

Panel ->Form1 ->Form2.

Form1的 parent 是 panel.

Form2 的 parent 是 Form1.

為什麼這樣做呢?是因為 Form2 是一張大白紙讓我畫圖,而捲軸的行為在 Form1上, Panel 是主視窗一個 PageControl 中的 Client 屬性.這樣,我的 Form2 就可以畫關係圖了.

本以 TFrame 為 Form1的角色,結果發現 Frame 內所包的 Form 大小受限太多,而有 Canvas 與 KEY MOUSE message 完整者大概就是 TForm 了.唉! Builder 元件太粗慥了.

現 Form2 當有視窗或對話盒在上面移動或拖動時, Form2 就像被擦掉般又不懂更新,問題ㄚ!

------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
系統時間:2024-04-29 3:13:16
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!