Delphi 12 MDI:更改标题颜色?

dkqlctbz  于 9个月前  发布在  其他
关注(0)|答案(1)|浏览(113)

在 Delphi 12之前,MDI子程序显示在Windows 7 Aero设计中,甚至在Windows 11中也是如此。
新的 Delphi 12是MDI儿童有典型的Windows 10/11设计,这是惊人的,在我看来!
x1c 0d1x的数据
然而,我不喜欢每个MDI子窗口的标题都是白色,因为白色通常是非活动窗口的颜色。我想知道,我可以以某种方式将MDI子窗口的边框颜色更改为除了白色之外的任何颜色吗?
我尝试了以下代码,它在主窗体上工作,但在MDI子窗体上不工作:

procedure TFormXYZ.CreateWnd;
var
  col: COLORREF;
begin
  inherited;
  col := 0; // black
  DwmSetWindowAttribute(WindowHandle, DWMWA_CAPTION_COLOR, @col, SizeOf(COLORREF));
  DwmSetWindowAttribute(WindowHandle, DWMWA_BORDER_COLOR, @col, SizeOf(COLORREF));
end;

字符串
谢谢你的帮助。

csbfibhn

csbfibhn1#

由于 Delphi 12 MDI子窗体不再由Windows绘制,而是由VCL本身绘制,更准确地说,绘制由TChildFormMessageHandler处理。在该类中,边框颜色取自常量cBorderColor,其值为clWhite
不幸的是,这个类是私有的,除了使用您自己的 * Vcl.Forms.pas * 副本之外,没有官方的方法来替换实现或以某种方式调整它。
无论哪种方式,我建议在Quality Portal上提交一个特性请求,为活动和非活动MDI子窗体使用不同的边框颜色。

相关问题