Mega Code Archive

 
Categories / Delphi / Files
 

Change the color of a tpagecontrols

{...} type TTabSheet = class(ComCtrls.TTabSheet) private FColor: TColor; procedure SetColor(Value: TColor); procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd); message WM_ERASEBKGND; public constructor Create(aOwner: TComponent); override; property Color: TColor read FColor write SetColor; end; type TForm1 = class(TForm) Button1: TButton; PageControl1: TPageControl; TabSheet1: TTabSheet; TabSheet2: TTabSheet; TabSheet3: 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} constructor TTabSheet.Create(aOwner: TComponent); begin inherited; FColor := clBtnFace; end; procedure TTabSheet.SetColor(Value: TColor); begin if FColor <> Value then begin FColor := Value; Invalidate; end; end; procedure TTabSheet.WMEraseBkGnd(var Msg: TWMEraseBkGnd); begin if FColor = clBtnFace then inherited else begin Brush.Color := FColor; Windows.FillRect(Msg.dc, ClientRect, Brush.Handle); Msg.Result := 1; end; end; procedure TForm1.FormCreate(Sender: TObject); begin Tabsheet1.Color := clWhite; TabSheet2.Color := clLime; end; // PageControl1.OwnerDraw := True ! procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean); var AText: string; APoint: TPoint; begin with (Control as TPageControl).Canvas do begin Brush.Color := ClGreen; FillRect(Rect); AText := TPageControl(Control).Pages[TabIndex].Caption; with Control.Canvas do begin APoint.x := (Rect.Right - Rect.Left) div 2 - TextWidth(AText) div 2; APoint.y := (Rect.Bottom - Rect.Top) div 2 - TextHeight(AText) div 2; TextRect(Rect, Rect.Left + APoint.x, Rect.Top + APoint.y, AText); end; end; end; end.