我从2009升级到了Delphi XE,遇到了一个奇怪的问题。
我创建了一个新项目,在其中放置了一个TRibbon控件,编译并运行。保持窗体在默认大小下最小化和还原,没有问题。然后我将窗体最大化,最小化和还原,窗体的颜色就会变成黑色。
我没有随机代码来改变窗体颜色,并且使用所有默认的Delphi XE,每一次都会出现这个问题。
我已经把编译好的exe文件移动到了朋友的电脑上,问题仍然存在,所以我知道这不是我的电脑问题。如果关闭Aero效果,问题就消失了,但是重新启用Aero后问题又回来了。
有什么想法吗?我很难在互联网上找到与此问题相关的线程。
谢谢, Seb
编辑(根据要求,以下是显示此行为的表单的DFM。注意:任何我开始的项目都会出现这种情况):
我创建了一个新项目,在其中放置了一个TRibbon控件,编译并运行。保持窗体在默认大小下最小化和还原,没有问题。然后我将窗体最大化,最小化和还原,窗体的颜色就会变成黑色。
我没有随机代码来改变窗体颜色,并且使用所有默认的Delphi XE,每一次都会出现这个问题。
我已经把编译好的exe文件移动到了朋友的电脑上,问题仍然存在,所以我知道这不是我的电脑问题。如果关闭Aero效果,问题就消失了,但是重新启用Aero后问题又回来了。
有什么想法吗?我很难在互联网上找到与此问题相关的线程。
谢谢, Seb
编辑(根据要求,以下是显示此行为的表单的DFM。注意:任何我开始的项目都会出现这种情况):
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 555
ClientWidth = 989
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
Position = poScreenCenter
PrintScale = poNone
Scaled = False
PixelsPerInch = 96
TextHeight = 13
object Ribbon1: TRibbon
Left = 0
Top = 0
Width = 989
Height = 143
Caption = 'Ribbon1'
ExplicitLeft = 104
ExplicitTop = 296
ExplicitWidth = 0
StyleName = 'Ribbon - Luna'
end
end
没有任何花哨的东西,它只是一个带有单个表单的新项目。
GlassFrame.SheetOfGlass = True
吗?问这个是因为黑色是玻璃的默认键颜色,也许你的应用程序中某种方式禁用了"玻璃",导致你看到了黑色键颜色。 - Cosmin PrundGlassFrame.SheetOfGlass
可以解决问题,这表明你看到的黑色确实与“玻璃”有关。不幸的是,我现在无法测试。我会采取几种方法:跟踪代码,当我切换SheetOfGlass
时查看涉及哪些API调用,然后找出是否因其他原因在程序中调用了其中一些API。然后我会尝试弄清楚黑色是由VCL还是Windows自身绘制的:我会尝试覆盖窗体的WM_ERASEBKGND处理程序并将背景绘制为红色。 - Cosmin PrundGlassFrame
子属性,检查GlassFrame.Top/Bottom/Left/Right
,也许其中某些地方出了问题,导致了一些错误。尝试将它们全部设置为0,看看会发生什么。如果您能提供一个最小化的表单DFM文件以展示此问题,那将非常有趣,我想自己尝试一下。 - Cosmin Prund