Es muy fácil, usas un TPanel y en su evento OnMouseDown le pones la propiedad BevelOuter:=bvLowered y en OnMouseUp BevelOuter:=bvRaised
y ya tienes un ColorButton. Y de propina.. me he entretenio en hacer un componente con la idea expuesta, aquí tienes el código, sólo tienes que guardarlo en una unit llamada ColorBoton.pas.
Código Delphi
[-]
unit ColorBoton;
interface
uses Windows, Messages, SysUtils, Classes, Controls, Forms, extctrls;
type
TColorBoton = class(TPanel)
private
protected
procedure MouseDown(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);override;
procedure MouseUp(Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);override;
public
published
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('ClubDelphi', [TColorBoton]);
end;
procedure TColorBoton.MouseDown;
begin
inherited;
BevelOuter:=bvLowered;
end;
procedure TColorBoton.MouseUp;
begin
inherited;
BevelOuter:=bvRaised;
end;
end.