Когда я докажу 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.
Я предлагаю вам использовать JvDocking в JVCL вместо потому что она обрабатывает это гораздо лучше, чем нативный CommonControls TTabSheet + 'Form.Dock/ManualDock' будет когда-либо обрабатывать его. Если вы не хотите, чтобы пользователь перетаскивал док-станцию и все это во время выполнения, я все же предлагаю вам отказаться от TPageControl и, по крайней мере, использовать элемент управления Tab/page, не поддерживающий MS-common-controls. Это намного хуже, чем вы думаете. Вы получаете разные типы поведения на Win7/64bit, чем на Win7/32bit, благодаря ошибкам в DLL MSCOMMONCONTROLS на Win7/64 тоже. –