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

PageControl之TabSheet颜色问题

尚未結案
hrbshen
一般會員


發表:10
回覆:11
積分:4
註冊:2005-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-18 15:19:09 IP:218.9.xxx.xxx 未訂閱
当选择某一TabSheet时,如何改变其TabSheet名称的颜色(文字)?或底色?
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-18 15:29:06 IP:202.39.xxx.xxx 未訂閱
將 TPageControl 的 OwnerDraw 屬性設為 True 然後在 TPageControl 的 OnDrawTab 事件中用類似的程式碼做控制
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
  c: TCanvas;
begin
  c := PageControl1.Canvas;      case TabIndex of
    0:begin
        c.Brush.Color := clBlack; // 底色
        c.Font.Color := clWhite; // 字色
      end;
    1:begin
        c.Brush.Color := clWhite;
        c.Font.Color := clBlack;
      end;
  end;
  c.FillRect(Rect);
  c.TextOut(Rect.Left   2, Rect.Top   2, PageControl1.Pages[TabIndex].Caption);
end;
-- hagar.
hrbshen
一般會員


發表:10
回覆:11
積分:4
註冊:2005-04-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-18 16:04:26 IP:218.9.xxx.xxx 未訂閱
我的TabSheet都带有Image的。下面的方法将消除Image,如何解决?谢谢
引言: 將 TPageControl 的 OwnerDraw 屬性設為 True 然後在 TPageControl 的 OnDrawTab 事件中用類似的程式碼做控制
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
  c: TCanvas;
begin
  c := PageControl1.Canvas;      case TabIndex of
    0:begin
        c.Brush.Color := clBlack; // 底色
        c.Font.Color := clWhite; // 字色
      end;
    1:begin
        c.Brush.Color := clWhite;
        c.Font.Color := clBlack;
      end;
  end;
  c.FillRect(Rect);
  c.TextOut(Rect.Left   2, Rect.Top   2, PageControl1.Pages[TabIndex].Caption);
end;
-- hagar.
hrbshen
一般會員


發表:10
回覆:11
積分:4
註冊:2005-04-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-18 16:04:29 IP:218.9.xxx.xxx 未訂閱
我的TabSheet都带有Image的。下面的方法将消除Image,如何解决?谢谢
引言: 將 TPageControl 的 OwnerDraw 屬性設為 True 然後在 TPageControl 的 OnDrawTab 事件中用類似的程式碼做控制
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
  c: TCanvas;
begin
  c := PageControl1.Canvas;      case TabIndex of
    0:begin
        c.Brush.Color := clBlack; // 底色
        c.Font.Color := clWhite; // 字色
      end;
    1:begin
        c.Brush.Color := clWhite;
        c.Font.Color := clBlack;
      end;
  end;
  c.FillRect(Rect);
  c.TextOut(Rect.Left   2, Rect.Top   2, PageControl1.Pages[TabIndex].Caption);
end;
-- hagar.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-18 16:10:03 IP:202.39.xxx.xxx 未訂閱
所謂的 TabSheet 帶 Image 是指 TabSheet 上有放 TImage 嗎? 會將其消除是指 TImage 的圖會被消除嗎? 小弟試的結果並不會啊! -- hagar.
hrbshen
一般會員


發表:10
回覆:11
積分:4
註冊:2005-04-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-18 16:35:54 IP:218.9.xxx.xxx 未訂閱
你好 我通过TPageControl.Images加入了ImageList,之后对每一个TabSheet.ImageIndex指定了相应的图。即每一TabSheet的Title前显示一个图。 將 TPageControl 的 OwnerDraw 屬性設為 True后就不能显示此图了。 可能 我没有说清楚哟。 谢谢
引言: 所謂的 TabSheet 帶 Image 是指 TabSheet 上有放 TImage 嗎? 會將其消除是指 TImage 的圖會被消除嗎? 小弟試的結果並不會啊! -- hagar.
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-18 16:45:49 IP:202.39.xxx.xxx 未訂閱
了解了,改成如下試試:
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
  c: TCanvas;
  bmp: TBitmap;
begin
  c := PageControl1.Canvas;      case TabIndex of
    0:begin
        c.Brush.Color := clBlack; // 底色
        c.Font.Color := clWhite; // 字色
      end;
    1:begin
        c.Brush.Color := clWhite;
        c.Font.Color := clBlack;
      end;
  end;
  c.FillRect(Rect);      bmp := TBitmap.Create;
  ImageList1.GetBitmap(TabIndex, bmp);
  c.Draw(Rect.Left, Rect.Top, bmp);
  c.TextOut(Rect.Left   bmp.Width   2, Rect.Top   2, PageControl1.Pages[TabIndex].Caption);
  bmp.Free;
end;
-- hagar.
hrbshen
一般會員


發表:10
回覆:11
積分:4
註冊:2005-04-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-07-18 17:06:37 IP:218.9.xxx.xxx 未訂閱
谢谢。
引言: 了解了,改成如下試試:
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
var
  c: TCanvas;
  bmp: TBitmap;
begin
  c := PageControl1.Canvas;      case TabIndex of
    0:begin
        c.Brush.Color := clBlack; // 底色
        c.Font.Color := clWhite; // 字色
      end;
    1:begin
        c.Brush.Color := clWhite;
        c.Font.Color := clBlack;
      end;
  end;
  c.FillRect(Rect);      bmp := TBitmap.Create;
  ImageList1.GetBitmap(TabIndex, bmp);
  c.Draw(Rect.Left, Rect.Top, bmp);
  c.TextOut(Rect.Left   bmp.Width   2, Rect.Top   2, PageControl1.Pages[TabIndex].Caption);
  bmp.Free;
end;
-- hagar.
系統時間:2024-11-23 12:34:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!