PageControl kolor TabSheet'a

0

Witam
:-[
Mam mały,ale irytujący mnie problem. :-[
Pisze sobie aplikację w Delphi7 i przy zmianie koloru dla PageControl :

 PCWniosek.Brush.Color:=$00FBF3E1

Mam ładny niebieski kolor wszędzie poza samymi zakładkami- mam tu na myśli samą górną część każdego TabSheet'a.

Zresztą podobnie ma się sprawa z MainMenu,nie mam pojęcia co zrobić, aby pasek MainMenu miał ,inny niż szary, kolor.

Sorki za banały,ale ręce mi już opadają.

Z góry dziękuję.

0
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.
0

Hehe
Ślicznie dziękuję,teraz dopiero w pełni zaczynam doceniać Microsoft Visual Studio 2005:-D

1 użytkowników online, w tym zalogowanych: 0, gości: 1