Only for TSpeedButton (tested on Lazarus 2.0.6 & Windows 10)
(Object Inspector or code)
1) SpeedButton1.Transparent := False;
2) SpeedButton1.Flat := True;
3) SpeedButton1.Color := <any different from parent color>;
procedure Tform1.SpeedButton1Click(Sender: TObject);
begin
if SpeedButton1.color = clRed then
SpeedButton1.color := clBlue
else
SpeedButton1.color := clRed;
end;
(Sorry my bad english...)