如何将选项卡页中停靠表单的颜色设置为正确的颜色



当我将TForm停靠到TTabSheet时,表单的背景颜色为灰色。另一方面,标签页具有白色背景色。

当禁用主题(例如经典 Windows 主题)时,它会变得更加复杂。

使用当前代码,灰色形式有一个白色边框,这非常丑陋。

那么如何将表单背景颜色设置为选项卡页背景颜色呢?如果这不起作用:如何将选项卡页背景颜色设置为表单背景颜色?

它应该适用于启用运行时主题和禁用运行时主题的情况。

program Project1;
uses
  Graphics,
  Controls,
  Forms,
  ComCtrls;
{$R *.res}
var
  Main        : TForm;
  Sub         : TForm;
  PageControl : TPageControl;
  TabSheet    : TTabSheet;
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm, Main);
  Application.CreateForm(TForm, Sub);
  PageControl        := TPageControl.Create(Main);
  PageControl.Parent := Main;
  PageControl.Align  := alClient;
  TabSheet             := TTabSheet.Create(Main);
  TabSheet.PageControl := PageControl;
  Sub.Dock(TabSheet, TabSheet.ClientRect);
  Sub.Align := alClient;
  Sub.Show;
  // Sub.Color := clWhite; // TabSheet.Color;
  Application.Run;
end.

我找到了这个解决方法

type
  TWinControlAccess = class(TWinControl)
  end;
procedure TMainForm.CreateEmbedded(FormClass: TFormClass; Parent: TWinControl);
var
  form: TForm;
begin
  form := FormClass.Create(Self);
  form.Align := alClient;
  form.BorderIcons := [];
  form.BorderStyle := bsNone;
  form.Parent := Parent;
  TWinControlAccess(form).ParentBackground := True; // <<<-
  form.Show;
end;

前往这篇名为 Chris Rolliston 的标题为主题所有者绘制的标签的博客文章


引号:

问题:假设您想自定义选项卡上选项卡的字体颜色 选项卡或页面控件。 过去,这很简单——设置 OwnerDraw 为 True 并为仅设置字体的 OnDrawTab 提供处理程序 并绘制文本。 然而,对于 Windows 主题,情况并非如此 很简单,因为将所有者绘制设置为 True 会禁用主题 控制。 本身不是VCL限制,这仅反映了 底层 API 控件的行为,如果您考虑一下,它会 从向后兼容性的角度来看,这是很有意义的。 尽管如此,如果您知道自己想要什么,这仍然是一个问题,这 只是自定义选项卡的标题。 然后输入 TTabControlExTPageControlEx,它们使用主题 API 来提供适当的 "查看",即使 OwnerDraw 设置为 True。


至少,他可能已经部分解决了你的TTabControlEx和/或TPageControlEx组件的问题。

相关内容

  • 没有找到相关文章

最新更新