gpt4 book ai didi

具有 Aero 效果的 Delphi XE 导致油漆问题

转载 作者:行者123 更新时间:2023-12-03 14:44:30 26 4
gpt4 key购买 nike

我已从 2009 年升级到 Delphi XE,但遇到了一个奇怪的问题。

我新建一个项目,放下一个TRibbon控件,编译并运行。将表单保持为默认大小,然后最小化并恢复,不会出现任何问题。然后我最大化表单,最小化并恢复,表单颜色更改为黑色。

我没有随机代码来更改它,并且正在使用 Delphi XE 附带的所有默认值,并且它每次都会执行此操作,不会失败。

我已将编译后的 exe 移至 friend 的计算机上,但问题仍然存在,因此我知道这不是我的计算机。如果我关闭 Aero 效果,问题就会消失,但是重新打开 Aero 效果,问题就会再次出现。

有什么想法吗?我无法在互联网上找到与此问题相关的任何相关线索。

谢谢,塞布

编辑(根据要求,显示此行为的表单的 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

一点也不奇怪,这只是一个单一形式的新项目。

最佳答案

我能够重现该错误,以下是我发现的一些问题。也许他们会帮助别人解决这个问题。

  • 如果我在表单上放置一个按钮并从按钮的 OnClick 事件中调用 Invalidate,表单将恢复其颜色。
  • 如果我在表单上放置一个计时器,请在 WM_SIZE 上从 WndProc 启用计时器,其中 wParam = SIZE_MAXIMIZED,然后从计时器中调用 Invalidate ,表单将恢复其颜色。这本质上与第一种方法(从按钮调用 Invalidate)相同,但计时器会自动执行此操作,并确保仅当没有更多消息时才调用 Invalidate被处理。我用一个简单的 PostMessage 尝试了同样的操作,但没有成功(即:我可能 Invalidate 太快了,这可能是另一个线索)
  • 有趣:如果我在项目源代码中创建 Application.MainFormOnTaskbar := False,我将不再看到黑色表单。

解决方法

功能区占据表单的顶部。将 TPanel 放在表单的其余部分上,使其 Align = alClient 并将所有内容放在面板上。面板后面的黑色不再可见!

关于具有 Aero 效果的 Delphi XE 导致油漆问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490900/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com