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
博客主要展示了在Windows环境下,通过interface定义了TTransGroupBox和TTransRadioGroup两个类,并重写了CreateParams和WMEraseBkGnd方法,以实现控件的透明效果,最后还给出了注册组件的代码及相关参考链接。

3万+

被折叠的 条评论
为什么被折叠?



