線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1827
推到 Plurk!
推到 Facebook!

如何讓tabsheel的caption字型變色??

答題得分者是:cmf
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-24 12:25:01 IP:61.220.xxx.xxx 未訂閱
如何讓tabsheel的caption字型變色??
------
ivankuo
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-24 12:52:58 IP:61.218.xxx.xxx 未訂閱
引言: 如何讓tabsheel的caption字型變色??
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls; type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; procedure PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); begin Control.Canvas.Font.Color:=clRED; Control.Canvas.TextOut(rect.Left.rect.Top,PageControl1.Pages[TabIndex].Caption;); end; procedure TForm1.FormCreate(Sender: TObject); begin PageControl1.OwnerDraw:=TRUE; end; end.
------
︿︿
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-24 12:56:10 IP:147.8.xxx.xxx 未訂閱
Set the PageControl1.OwnerDraw to True and write an event:    
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
    with Control.Canvas do begin
        Font.Color := clRed;
        TextRect(Rect,Rect.Left 1,Rect.Top 1,PageControl1.Pages[TabIndex].Caption);
    end;
end;
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-01-24 14:06:06 IP:61.220.xxx.xxx 未訂閱
兩位前輩的方法都可行,但是所有的tabsheel都會一起變色,不能點到其中一個tabsheel,單獨那個tabsheel顏色變換ㄇ??
------
ivankuo
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-01-24 14:10:23 IP:61.218.xxx.xxx 未訂閱
unit Unit1;    interface    uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls;    type TForm1 = class(TForm) PageControl1: TPageControl; TabSheet1: TTabSheet; procedure PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end;    var Form1: TForm1;    implementation    {$R *.dfm}    procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); begin if PageControl1.ActivePageIndex = TabIndex then Control.Canvas.Font.Color:=clRED else Control.Canvas.Font.Color:=clBLUE; Control.Canvas.TextOut(rect.Left.rect.Top,PageControl1.Pages [TabIndex].Caption); end; procedure TForm1.FormCreate(Sender: TObject); begin PageControl1.OwnerDraw:=TRUE; end; end. 發表人 - cmf 於 2003/01/24 14:11:20
------
︿︿
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-01-24 15:16:21 IP:210.58.xxx.xxx 未訂閱
Hi ivankuo 兄您好:    轉貼 如何將TPageControl物件中的各頁(TTabSheet物件)的背景色    就在每個 Page 中貼一個 Panel , 設定 align = alClient , 把 color 設定為你想要的顏色 ,應該就可以了 ,但如果你是要改頁標籤的顏色 ,那就把OwnerDraw 的屬性設為True , 在 onDrawTab 的屬性自己畫你想要的顏色囉

procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
   case TabIndex of
        0: Control.Canvas.Brush.Color:=clMaroon;
        1: Control.Canvas.Brush.Color:=clBlue;
        2: Control.Canvas.Brush.Color:=clGreen;
   end;
   control.Canvas.FillRect(Rect);
   Control.Canvas.TextOut(Rect.Left   2, Rect.Top   2,
   TPageControl(Control).Pages[TabIndex].Caption);
   Active:=True;
end;
我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-01-28 09:25:47 IP:61.220.xxx.xxx 未訂閱
cmf前輩: 為何你這樣的寫法只針對activePage作用ㄋ??切換別的Tabsheet的時候,原來顏色還是紅色??
------
ivankuo
cmf
尊榮會員


發表:84
回覆:918
積分:1032
註冊:2002-06-26

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-01-28 09:40:29 IP:61.218.xxx.xxx 未訂閱
ivankuo:           你是要 每個 TAB 都不同顏色嗎?              如果不是的話 參考下列                if   Active then             Control.Canvas.Font.Color:=clRED           else             Control.Canvas.Font.Color:=clBLUE;              Control.Canvas.TextOut(rect.Left,rect.Top,                          PageControl1.Pages[TabIndex].Caption);         發表人 - cmf 於 2003/01/28 09:46:21
------
︿︿
ivankuo
中階會員


發表:132
回覆:272
積分:95
註冊:2002-11-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-01-28 10:14:38 IP:61.220.xxx.xxx 未訂閱
可以了~~~感謝cmf前輩~~~ 也感謝Miles前輩的指點
------
ivankuo
系統時間:2024-04-30 15:28:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!