前几天,我开始在Delphi中使用不同的视觉效果,并使用Aero Glass效果遇到问题(我安装了Delphi 2010):当我把按钮放在玻璃上时,这个按钮的某些部分(或其他一些元素)燃烧并变得透明。我不知道为什么,但我试图在其他计算机上做同样的例子。这个错误重复了。
带有错误的屏幕截图;第二个按钮的标题是透明的:
我的示例程序:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
end.
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 202
ClientWidth = 331
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
GlassFrame.Enabled = True
GlassFrame.Bottom = 50
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 64
Top = 153
Width = 175
Height = 41
Caption = 'Button1'
Font.Charset = DEFAULT_CHARSET
Font.Color = clMenuHighlight
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 0
end
object Button2: TButton
Left = 64
Top = 73
Width = 175
Height = 41
Caption = 'Button1'
Font.Charset = DEFAULT_CHARSET
Font.Color = clMenuHighlight
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
TabOrder = 1
end
end
答案 0 :(得分:4)
这是Delphi 2010支持“glass”(使用DWM的Aero Composition)的一个已知错误,我相信它已在Delphi XE中修复,我选择使用的解决方法是使用我自己的自定义TButton类
当我在2010年看到它时,我向Embarcadero报告了这个错误,就像其他人一样,我似乎无法找到QC#(错误报告#),但建议的双缓冲解决方案对我来说是不可接受的。 TBitBtn
我没有表现出这个问题,这是我最简单的解决方法,尽管还有其他问题。
Delphi 2010中有很多玻璃问题。一般建议;升级德尔福。