有關panel位置的問題? |
尚未結案
|
mathewzhao
中階會員 發表:121 回覆:164 積分:67 註冊:2003-04-04 發送簡訊給我 |
各位先進好! 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 發送簡訊給我 |
這些步驟應該可以達成你的需求
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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
再修正:
两段即可.试试看
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 發送簡訊給我 |
感謝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 發送簡訊給我 |
|
Mickey
版主 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |