请问如果把pagecontrol这个控件动态染色(或者只将其中的tabsheet染色)且不影响到其它功能的使用?
我在它的属性中找不到color这个属性,我用的是Delphi6.

解决方案 »

  1.   

    http://www.torry.net/pagecontrols.htm
    会有你需要的组件的change the color of a TPageControls?Author:Peter BelowtypeTTabSheet = class(ComCtrls.TTabSheet)privateFColor: TColor;procedure SetColor(Value: TColor);procedure WMEraseBkGnd(var Msg: TWMEraseBkGnd);message WM_ERASEBKGND;publicconstructor Create(aOwner: TComponent); override;property Color: TColor read FColor write SetColor;end;{...}implementation{...}constructor TTabSheet.Create(aOwner: TComponent);begininherited;FColor := clBtnFace;end;procedure TTabSheet.SetColor(Value: TColor);beginif FColor Value thenbeginFColor := Value;Invalidate;end;end;procedure TTabSheet.WMEraseBkGnd(var Msg: TWMEraseBkGnd);beginif FColor = clBtnFace theninheritedelsebeginBrush.Color := FColor;Windows.FillRect(Msg.dc, ClientRect, Brush.Handle);Msg.Result := 1;end;end;procedure TForm1.FormCreate(Sender: TObject);beginTabsheet1.Color := clWhite;TabSheet2.Color := clLime;end;// PageControl1.OwnerDraw := true !procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;TabIndex: Integer; const Rect: TRect; Active: Boolean);varAText: string;APoint: TPoint;beginwith (Control as TPageControl).Canvas dobeginBrush.Color := clred;FillRect(Rect);AText := TPageControl(Control).Pages[TabIndex].Caption;with Control.Canvas dobeginAPoint.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;
     
      

  2.   

    我知道的跟楼上一样;^_^;超级猛料里头的;^_^就不重复CTRL V了;^_^;
      

  3.   

    只用这段代码行吗?
    // PageControl1.OwnerDraw := true !procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;TabIndex: Integer; const Rect: TRect; Active: Boolean);varAText: string;APoint: TPoint;beginwith (Control as TPageControl).Canvas dobeginBrush.Color := clred;FillRect(Rect);AText := TPageControl(Control).Pages[TabIndex].Caption;with Control.Canvas dobeginAPoint.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;