Вот пример как можно сделать свою отрисовку для GB (к сожалению, события для отрисовки у стандартного компонента просто нету, соответсвенно, приходится пользоваться трюками):
Код:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TGroupBox = class(Vcl.StdCtrls.TGroupBox)
private
procedure Paint; override;
public
TextColor : TColor;
BorderColor : TColor;
constructor Create(AOwner : TComponent); override;
end;
TForm1 = class(TForm)
GroupBox1: TGroupBox;
btRed: TButton;
btBlue: TButton;
btGreen: TButton;
procedure btRedClick(Sender: TObject);
procedure btBlueClick(Sender: TObject);
procedure btGreenClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
constructor TGroupBox.Create(AOwner : TComponent);
begin
inherited;
TextColor := clBlack;
BorderColor := clBlack;
end;
procedure TGroupBox.Paint;
begin
Self.Canvas.Font.Color := TextColor;
Self.Canvas.Pen.Color := BorderColor;
Self.Canvas.Rectangle(0,0,self.Width,self.Height);
end;
procedure TForm1.btBlueClick(Sender: TObject);
begin
GroupBox1.TextColor := clBlue;
GroupBox1.BorderColor := clBlue;
GroupBox1.Repaint;
end;
procedure TForm1.btGreenClick(Sender: TObject);
begin
GroupBox1.TextColor := clGreen;
GroupBox1.BorderColor := clGreen;
GroupBox1.Repaint;
end;
procedure TForm1.btRedClick(Sender: TObject);
begin
GroupBox1.TextColor := clRed;
GroupBox1.BorderColor := clRed;
GroupBox1.Repaint;
end;
end.
Сделал только пример отрисовки, т.к. лень разбираться что же там должно отриовываться на самом деле. Кнопки делают отрисовку разными цветами, собственно, замена события.