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

标签 delphi colors themes delphi-2007 pagecontrol

当我将 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;

关于delphi - 如何将选项卡中停靠表单的颜色设置为正确的颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10139928/

相关文章:

delphi - 哪种处理记录数组的方法更有效?

delphi - 访问冲突 dcc70.dll

multithreading - PowerBuilder应用程序调用Delphi DLL

eclipse - 更改 'fixes' Eclipse 中的背景颜色

jquery - jquery中点击事件的问题

WPF 自定义主题

java - 在android中切换主题

delphi - SysUtils 和 System.SysUtils 中的 DecimalSeparator

windows - 如何通过批处理禁用 Windows 效果

c++ - 有没有办法在 Allegro 中对位图进行部分着色?