With enabled Runtimethemes, changing of color is not possible, perhaps changing of FontStyle might fit your needs too.
If not you would be able to call an own Notifyevent at the part of code with
"Message.Msg =BM_SETCHECK" to react in another way, e.g. changing the color of an underlying shape.
TDBCheckBox=Class(DBCtrls.TDBCheckbox)
procedure WndProc(var Message: TMessage); override;
private
End;
TForm1 = class(TForm)
DBCheckBox1: TDBCheckBox;
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TDBCheckBox }
procedure TDBCheckBox.WndProc(var Message: TMessage);
var
fs:TFontStyles;
begin
inherited;
if Message.Msg =BM_SETCHECK then
begin
if checked then Font.Color := clLime else Font.Color := clRed; // Will only work if runtimethemes are disabled
fs := Font.Style;
if checked then Include(fs, fsbold) else Exclude(fs, fsbold);
Font.Style := fs;
end;
end;