带有Aero玻璃的Windows版本的Delphi 2010按钮将文本变为白色

时间:2013-04-15 15:38:23

标签: delphi delphi-2010 aero-glass

前几天,我开始在Delphi中使用不同的视觉效果,并使用Aero Glass效果遇到问题(我安装了Delphi 2010):当我把按钮放在玻璃上时,这个按钮的某些部分(或其他一些元素)燃烧并变得透明。我不知道为什么,但我试图在其他计算机上做同样的例子。这个错误重复了。

带有错误的屏幕截图;第二个按钮的标题是透明的: enter image description here

我的示例程序:

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

1 个答案:

答案 0 :(得分:4)

这是Delphi 2010支持“glass”(使用DWM的Aero Composition)的一个已知错误,我相信它已在Delphi XE中修复,我选择使用的解决方法是使用我自己的自定义TButton类

当我在2010年看到它时,我向Embarcadero报告了这个错误,就像其他人一样,我似乎无法找到QC#(错误报告#),但建议的双缓冲解决方案对我来说是不可接受的。 TBitBtn我没有表现出这个问题,这是我最简单的解决方法,尽管还有其他问题。

Delphi 2010中有很多玻璃问题。一般建议;升级德尔福。