4

前几天,我开始在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
4

1 回答 1

4

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

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

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

于 2013-04-15T22:06:20.963 回答