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

有關panel位置的問題?

尚未結案
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-02 14:42:57 IP:61.150.xxx.xxx 未訂閱
各位先進好!     Form佈局:
 
|-------------------|   
|        |          |
| Panel2 |          |
|        |          |  
|--------|  panel4  |    
|        |          |
| panel3 |          |
|        |          |
|-------------------|
1) panel2,panel3的parent是panel1(圖中未標出 Panel1[即除了panel4的其餘部分]) 2) panel1與panel4之間有Splitter1相隔 panel2與panel3之間有Splitter2相隔 3)Align panel1:alLeft panel2:alTop panel3:alClient panel4:alClient 現在希望在panel1上放一個panel5,要求panel1與panel5有相同大小與位置 ,可以根據需要顯示panel1或panel5 . Q:請問該如何考慮這個問題? 謝謝! 發表人 - mathewzhao 於 2004/04/02 16:05:46
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-02 15:55:37 IP:210.61.xxx.xxx 未訂閱
這些步驟應該可以達成你的需求 1. 貼上panel1 2. 貼上panel在和panel1同一個parent上, 更名為panel5, 尺寸位置相同, 用Send to back選單使它堆在panel1之後 3. 相繼在panel1上佈置panel2,panel3,panel4 if a情況 then panel1.bringtofront else if b情況 then panel5.bringtofront Best regards 發表人 - pedro 於 2004/04/02 15:56:54
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-02 16:12:32 IP:218.15.xxx.xxx 未訂閱
mathewzhao你好: 试试下面的方法,在panel4拉一个Button,方便控制; procedure TForm1.FormCreate(Sender: TObject); begin Panel5.Visible:=false; Panel5.Enabled:=False; end; procedure TForm1.Button1Click(Sender: TObject);//用于控制显示哪个panel,当然你也可以用条件进行判断 begin panel5.Visible:=true; panel1.Visible:=false; panel5.Align:=alLeft; end; ——行径窄处,留一步与人行——
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-02 16:32:00 IP:218.15.xxx.xxx 未訂閱
sorry ,上面的做法有些欠妥,修正,试试下面这种做法: 你上面的那些设置不用修改,新拉一个panel6,在panel4放两个button进行测试 procedure TForm1.FormCreate(Sender: TObject); begin Panel1.Visible:=false; Panel1.Enabled:=False; Panel5.Visible:=false; Panel5.Enabled:=False; Panel6.Align:=alLeft; end; procedure TForm1.Button1Click(Sender: TObject); begin Panel1.Parent:=Panel6; Panel1.Align:=alClient; Panel6.BevelOuter:=bvNone; Panel1.Visible:=True; Panel1.Enabled:=True; end; procedure TForm1.Button2Click(Sender: TObject); begin Panel5.Parent:=Panel6; Panel5.Align:=alClient; Panel6.BevelOuter:=bvNone; Panel5.Visible:=True; Panel5.Enabled:=True; end; ——行径窄处,留一步与人行——
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-02 16:32:05 IP:61.150.xxx.xxx 未訂閱
pedro您好! 如果您試一下,會發現panel1與panel5還是左右並列顯示(Design time),原因可能是您沒有考慮panel1與panel5的Align.(否則Splitter一移動,panel1或panel5就亂套了) 另外: 我是希望 1)在Design time完成這個佈局. 2)在Run time 控制panel1與panel5的顯示. 最後感謝您的熱心回應! { panel1與panel5有如下3點相同 1)相同Position 2)相同Size 3)相同Align(alLeft) }
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-02 16:50:54 IP:218.15.xxx.xxx 未訂閱
再修正: 两段即可.试试看 procedure TForm1.FormCreate(Sender: TObject); begin Panel5.Visible:=false; Panel6.Visible:=false; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Panel6.Visible:=true; Panel6.Align:=alLeft; Panel6.BevelOuter:=bvNone; Panel1.Enabled:=false; Panel1.Visible:=false; Panel5.Parent:=Panel6; Panel5.Align:=alClient; Panel5.Visible:=True; Panel5.Enabled:=True; end; ——行径窄处,留一步与人行——
mathewzhao
中階會員


發表:121
回覆:164
積分:67
註冊:2003-04-04

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-02 17:06:28 IP:61.150.xxx.xxx 未訂閱
感謝deity熱心回應!  您提供的方法我需先學習一下. 另外,我想到另一種方法: Object Treeview:
|--panel6 (Align:alLeft)
|  |
|  |--panel5 (Align:alClient)
|  |--Panel1 (Align:alClient)
|      |--panel2 (Align:alTop)
|      |--panel3 (Align:alClient)
|      |--Splitter2
|--Spiltter1
|--Panel4(Align:alClient)
增加一個Panel6,就可以做到以上要求. panel1與panel5有如下4點相同 1)相同Position 2)相同Size 3)相同Align(alClient) 4)相同Parent 發表人 - mathewzhao 於 2004/04/02 17:08:36 發表人 - mathewzhao 於 2004/04/02 17:11:26
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-03 00:41:41 IP:219.129.xxx.xxx 未訂閱
你好: 我给你提供的方法就是像你说的这种方式来实现你的要求,你可以试试看,如有不足,请指出! 我的是先默认Panel1和Panel4显示,然后用timer通过panel6将panel1与panel5进行交换。你可以试试看。 ——行径窄处,留一步与人行——
Mickey
版主


發表:77
回覆:1882
積分:1390
註冊:2002-12-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-04-04 11:39:21 IP:218.32.xxx.xxx 未訂閱
mathewzhao 你好: 也可以考慮 Panel6 改用 TPageControl , Panel1 與 Panel5 換用 TTabSheet (TabVisible := False), 這樣 Design Time 畫面設計比較方便, Run Time 只 須 切換 PageControl 的 ActivePage Property.
系統時間:2024-06-26 21:19:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!