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

請問各位大大,如何在Form中運用多用Panel 。

答題得分者是:P.D.
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-11-15 13:35:17 IP:61.221.xxx.xxx 未訂閱
請問各位大大。    目前使用一個表單Form1中有4個panel和1個StatusBar等物件。 panel1是放控制按鈕如新增。刪除等等。 panel1.Align = altop panel2是放一些文字框。 panel3是pageControl分別會開4頁面。 第一個頁面到第三個頁面是放一些文字框。 第四個頁面是放DBGrid。 panel4是放DBGrid。    當使用者選擇第四個頁面時,panel4要隱藏。 第一個頁面到第三頁面時,則會顯示。 但是當表單最大化時,好像畫面好像跑掉如下一樣。 謝謝    
huwk
資深會員


發表:26
回覆:340
積分:323
註冊:2002-04-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-11-15 17:37:16 IP:211.21.xxx.xxx 未訂閱
給你一個例子..你RUN RUN看是不是你想要的! http://delphi.ktop.com.tw/topic.php?TOPIC_ID=81417 PS.裡面有5個PANEL.
------
熊的學習 http://huwk.blogspot.com
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-11-16 01:00:59 IP:61.71.xxx.xxx 未訂閱
引言: 請問各位大大。 目前使用一個表單Form1中有4個panel和1個StatusBar等物件。 panel1是放控制按鈕如新增。刪除等等。 panel1.Align = altop panel2是放一些文字框。 panel3是pageControl分別會開4頁面。 第一個頁面到第三個頁面是放一些文字框。 第四個頁面是放DBGrid。 panel4是放DBGrid。 當使用者選擇第四個頁面時,panel4要隱藏。 第一個頁面到第三頁面時,則會顯示。 但是當表單最大化時,好像畫面好像跑掉如下一樣。 謝謝
看了好久才看懂, 我的建議, 你只要動 PANEL3的部份 1.PANEL3置入一個PAGECONTROL 的 ALIGN 為 alClient 2.PAGECONTROL中以進階資料頁為說明 內置入兩個PANEL3-1, PANGEL3-2 PANEL3-1 ALIGN 為 alTop, 內放所需要的欄位 PANEL3-2 ALIGN 為 alClient 內放為 dbgrid dbgrid 的 ALIGN 為 alClient 如此當 panel4 hide時, pagecontrol為 alclient 所以 pagecontrol可為最大 而 page2的 panel3-2也因為是 alClient, 所以也會填滿 pagecontrol 中 page2的空間 希望看的懂!
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-16 09:57:16 IP:61.221.xxx.xxx 未訂閱
謝謝兩位大大。 您兩位的方式,我都試過嘍。 huwk大大您所提供方式可以,但是。 在pagecontrol中只有在page4時才需要去隱藏panel4。 因為如果將panel4.visible := not panel4.visible; 使用到pagecontrol.change處理則會不斷隱藏panel4. P.D.大大。 在page1到page3的grid是共同的。 只有在page4時只有顯示單獨grid。 如果使用您所說的方法。 是否page1到page3都每頁都需要產生2個panel嗎。 請各位多多指教。謝謝。
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-16 11:22:26 IP:211.74.xxx.xxx 未訂閱
這個畫面看起來好眼熟,妳是不是要模仿鼎X的程式! 我之前也遇過這個問題,妳參考看看吧!
procedure TfrmMDBase01.PageControl1Change(Sender: TObject);
begin
  inherited;
  if PageControl1.ActivePage.Name = 'BrowseSheet' then  //當妳的TabSheet在瀏覽資料時
  begin
    DBGrid1.Align := alBottom;
    PageControl1.Align := alClient;
    DBGrid1.Height := 0;
  end
  else
  begin
    PageControl1.Align := alTop;
    DBGrid1.Align := alClient;
    PageControl1.Height := FPageControl1Height;
  end;
end;
我在程式一開始時有先吧PageControl的高度先記到FPageControl1Height變數裡 Ian
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-16 13:29:13 IP:61.221.xxx.xxx 未訂閱
Ian大大。 您好。被您猜對。 不好意思,沒有使用您所提供的方法。 因為我的grid有2個。 後來我在PageControl1Change中使用以下。   if PageControl1.ActivePage = TabSheet4  then   begin     if panel4.Visible = True then begin       panel3.Align := alClient;       panel4.visible := not panel4.visible;     end else begin       panel3.Align := alClient;     end;   end   else   begin     if panel4.Visible = False then begin       panel4.visible := not panel4.visible;     end;   end;    不好意思,在請各位大大。 當畫面按最大化時。 會出現如下圖的情況。 是否可以當我選擇最大化時。 選擇page1到page3時, panel4會跟著往上移, 還原時又可以看到。     謝謝
l630521
資深會員


發表:15
回覆:349
積分:372
註冊:2003-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-11-16 13:48:29 IP:203.73.xxx.xxx 未訂閱
我的DBGrid也是有兩個,一個是放在TabSheet4,一個是放在PageControl下, 程式設定是Panel1、Panel2、Panel3的Align都是設alTop,PageControl下的DBGrid的Align是設alClient,我之前就是遇到這樣會跑掉的問題,不過我是StatusBar會跑掉,才想到我上一篇PO的方法。 Ian
系統時間:2024-05-17 11:21:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!