Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Настройка цветов фонов в TPageControl: согласованность в любых темах

Delphi , Компоненты и Классы , Вкладки и Страницы

Вопрос согласования цветов фонов между вложенной формой и TTabSheet является актуальным для разработчиков, использующих компоненты Delphi. При докинге TForm на TTabSheet, фон формы может иметь серый цвет, в то время как сам TTabSheet остаётся с белым фоном. Это может быть особенно неприятно, когда отключена тематизация интерфейса, например, при использовании классической темы Windows.

Проблема усугубляется наличием белой границы у серой формы, что выглядит неэстетично. Задача состоит в том, чтобы установить цвет фона формы равным цвету фона TTabSheet, и сделать это таким образом, чтобы решение работало как с включенной, так и с отключенной тематизацией в runtime.

Пример кода

Вот пример кода, который демонстрирует, как можно решить эту проблему:

program Project1;
uses
  Graphics,
  Controls,
  Forms,
  ComCtrls;

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;

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.CreateEmbedded(TForm, TabSheet); // Используем функцию CreateEmbedded для докинга формы
  Sub.Show;
  Application.Run;
end.

Объяснение

Ключевым моментом в решении проблемы является использование свойства ParentBackground класса TWinControlAccess. Это свойство позволяет вложенной форме принять цвет фона родительского компонента.

Альтернативные решения

Рассмотрим альтернативные подходы, которые могут быть полезны, если стандартные средства не решают проблему:

  1. Использование компонентов JvDocking из JVCL. Эти компоненты предоставляют более продвинутые возможности для доккинга и могут лучше обрабатывать проблемы согласования цветов.
  2. Использование компонентов TTabControlEx и TPageControlEx, которые позволяют настраивать внешний вид вкладок с поддержкой тематизации.

Заключение

Согласование цветов фонов в TPageControl может быть непростой задачей, но с правильным подходом и использованием дополнительных возможностей компонентов, можно добиться желаемого результата. Важно помнить, что решение должно быть универсальным и работать в различных тематических режимах.

Создано по материалам из источника по ссылке.

Пользователь столкнулся с проблемой согласования цветов фонов между вложенной формой и TTabSheet в компоненте TPageControl в Delphi, особенно в условиях отключенной тематизации, и ищет решение, которое будет работать в любых темах.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Вкладки и Страницы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-01-22 14:50:42/0.0034229755401611/0