【发布时间】:2011-11-29 20:55:52
【问题描述】:
我正在使用以下代码使表单透明,但是当应用程序启用了 VCL 样式时,表单将使用 VCL 样式的背景颜色进行绘制,而不是透明的。
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs;
type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure CreateParams(var Params:TCreateParams); override;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := WS_EX_TRANSPARENT or WS_EX_TOPMOST;
//Params.ExStyle := Params.ExStyle or WS_EX_LAYERED;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Brush.Style:=bsClear;
BorderStyle:=bsNone;
//SetLayeredWindowAttributes(Handle, 0, 230, $00000002);
end;
仅供参考,如果 vcl 样式设置为 Windows,则代码可以正常工作。
是否存在另一种使表单透明以解决此问题的方法?
【问题讨论】:
标签: delphi delphi-xe2 vcl-styles