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

有關於Panel動態Create的問題

答題得分者是:Justmade
mangogo
一般會員


發表:3
回覆:3
積分:1
註冊:2002-11-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-10 16:09:15 IP:61.57.xxx.xxx 未訂閱
請教版主: 我寫了一支小程式,就是按下一個button,功能是可以一直動態Create Panel 內容 : 我在Form中設了一個PageControl,旁邊有一個button 每按一下button,就會Create一個TabSheet,然後連續Create 3個Panel至 該TabSheet中,但是Panel的Create的屬性Align是 := alLeft 但是按下第一次的Button之後,會是Panel3在最左邊,Panel1在最右邊 之後按下第二次以後的Button之後,會是Panel1在最左邊,Panel3在最右邊 這樣就是正常的了,很奇怪,第一次一定會不OK 我可能述說的差了一點,請有能力的人幫我看一下這段10幾行的小程式好嗎? 因為我在專案上會用到此功能 謝謝~ 程式碼如下 : procedure TForm1.Button1Click(Sender: TObject); var NewTabSheet: TTabSheet; NewPanel: TPanel; NewLabel: TLabel; i: Integer; begin NewTabSheet := TTabSheet.Create(nil); NewTabSheet.Caption := '測試TabSheet'; NewTabSheet.Font.Size := 10; NewTabSheet.Font.Name := '新細明體'; NewTabSheet.PageControl := PageControl1; for i:=1 to 2 do begin NewPanel := TPanel.Create(nil); NewPanel.Caption := 'PanelCaption' IntToStr(i); NewPanel.Name := 'PanelName' IntToStr(i); //NewPanel.AutoSize := True; NewPanel.BorderWidth := 10; NewPanel.Align := alLeft; //NewPanel.BevelOuter := bvNone; NewPanel.Parent := NewTabSheet; end; end; 帥帥的mangogo
------
帥帥的mangogo
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-10 23:01:48 IP:218.16.xxx.xxx 未訂閱
我也不知道仔細的原因,但我的經驗是有些東西在顯示在顯示時做和隱藏時做是有點不同的,大概是因為顯示時做要不斷 repaint 隱藏時不用罷。    你的程式第一次時 TPanel 是顯示時 Create 的但之後是 隱藏時 Create 的,所以有這問題。既是這樣,連第一次也是隱藏時做便好了,    方法很簡單,只要將你 NewTabSheet.PageControl := PageControl1 那行放到最後便可以了。    
procedure TForm1.Button1Click(Sender: TObject);
var
  NewTabSheet: TTabSheet;
  NewPanel: TPanel;
  NewLabel: TLabel;
  i: Integer;
begin
  NewTabSheet := TTabSheet.Create(nil);
  NewTabSheet.Caption := '測試TabSheet';
  NewTabSheet.Font.Size := 10;
  NewTabSheet.Font.Name := '新細明體';
  for i:=1 to 2 do
  begin
    NewPanel := TPanel.Create(nil);
    NewPanel.Caption := 'PanelCaption' IntToStr(i);
    NewPanel.Name := 'PanelName' IntToStr(i);
    NewPanel.BorderWidth := 10;
    NewPanel.Parent := NewTabSheet;
    NewPanel.Align := alLeft;
  end;
  NewTabSheet.PageControl := PageControl1;
end;
搶了站長的題來答不好意思喔。
mangogo
一般會員


發表:3
回覆:3
積分:1
註冊:2002-11-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-11 00:11:38 IP:218.167.xxx.xxx 未訂閱
謝謝你摟~~ 雖然是個簡單的觀念 但是卻以解決我的困擾 帥帥的mangogo
------
帥帥的mangogo
系統時間:2024-06-28 17:57:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!