interface
uses Windows, Messages, Controls, Classes, StdCtrls, ExtCtrls;
type
TTransGroupBox = class(TGroupBox)
private
protected
procedure WMEraseBkGnd(Var msg: TWMEraseBkGnd); message WM_ERASEBKGND;
public
procedure CreateParams(Var params: TCreateParams); override;
published
end;
TTransRadioGroup = class(TRadioGroup)
private
protected
procedure WMEraseBkGnd(Var msg: TWMEraseBkGnd); message WM_ERASEBKGND;
public
procedure CreateParams(Var params: TCreateParams); override;
published
end;
procedure Register;
implementation
{ TTransGroupbox }
procedure TTransGroupbox.CreateParams(Var Params: TCreateParams);
begin
inherited CreateParams(params);
Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;
procedure TTransGroupbox.WMEraseBkGnd(Var msg: TWMEraseBkGnd);
begin
SetBkMode(Msg.DC, Windows.TRANSPARENT);
Msg.result := 1;
end;
{ TTransRadioGroup }
procedure TTransRadioGroup.CreateParams(Var Params: TCreateParams);
begin
inherited CreateParams(params);
Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;
procedure TTransRadioGroup.WMEraseBkGnd(Var msg: TWMEraseBkGnd);
begin
SetBkMode(Msg.DC, Windows.TRANSPARENT);
Msg.result := 1;
end;
procedure Register;
begin
RegisterComponents('Transparent-VCL', [TTransGroupBox,TTransRadioGroup]);
end;
//要是对bcb有兴趣,这也有个实现http://blog.csdn.net/cker/archive/2004/06/23/24110.aspx