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

Изменение цвета заголовка MDI-окон в Delphi 12 для улучшения визуального восприятия

Delphi , Программа и Интерфейс , MDI приложения

Изменение цвета заголовка MDI-окон в Delphi 12

В последних версиях Delphi, включая Delphi 12, произошли изменения в отображении окон MDI (Multiple Document Interface), которые теперь используют стиль оформления, характерный для Windows 10 и 11. Это нововведение положительно воспринимается разработчиками, однако возникла проблема с цветом заголовков окон MDI, которые по умолчанию белого цвета, что может быть нежелательным, особенно если окно не активно.

Проблема

В версиях Delphi до 12, MDI-дочерние окна отображались в стиле Windows 7 Aero, даже если пользователь работал в операционной системе Windows 11. С появлением Delphi 12, MDI-дочерние окна получили новый вид, соответствующий стилю Windows 10/11. Однако, разработчики столкнулись с проблемой: цвет заголовка каждого MDI-дочернего окна по умолчанию белый, что обычно ассоциируется с неактивным состоянием окна. Пользователи задались вопросом, возможно ли изменить цвет границы MDI-дочерних окон на любой другой цвет, отличный от белого.

Попытка решения

Один из разработчиков попытался решить проблему, используя следующий код, который успешно работает на основном окне программы, но не дает нужного результата для MDI-дочерних окон:

procedure TFormXYZ.CreateWnd;
var
  col: COLORREF;
begin
  inherited;
  col := 0; // черный цвет
  DwmSetWindowAttribute(WindowHandle, DWMWA_CAPTION_COLOR, @col, SizeOf(COLORREF));
  DwmSetWindowAttribute(WindowHandle, DWMWA_BORDER_COLOR, @col, SizeOf(COLORREF));
end;

Подтвержденное решение

Согласно подтвержденному ответу, начиная с Delphi 12, MDI-дочерние формы больше не рисуются Windows, а выполняются самим VCL, точнее, рисование осуществляется классом TChildFormMessageHandler. Цвет границы берется из константы cBorderColor, которая по умолчанию имеет значение clWhite.

К сожалению, класс TChildFormMessageHandler является приватным, и официально изменить его реализацию или настроить под свои нужды невозможно, за исключением создания собственной копии файла _Vcl.Forms.pas в проекте.

Однако, один из разработчиков предложил альтернативное решение, модифицировав метод PaintBorder в файле _Vcl.Forms.pas (поиск по __cBorderColor__ и замена близлежащего кода). Это позволит изменить цвет границы MDI-окон в зависимости от их активности, что является ключевым моментом с точки зрения пользовательского интерфейса.

Важные замечания

  • Возможно, цвет границы MDI-окон можно влиять через стили VCL, но это потребует дополнительной проверки и настройки.
  • Изменение цветов границы и заголовка MDI-окон может потребовать более глубокого понимания работы с VCL и возможностью внесения изменений в системные файлы.

Рекомендация

Разработчикам рекомендуется обратиться в службу поддержки с просьбой о добавлении возможности изменения цветов границ для активных и неактивных MDI-дочерних окон, оформив соответствующий запрос на портале качества Quality Portal.

Заключение

Изменение цвета заголовка MDI-окон в Delphi 12 – это задача, которая требует внимания к деталям и готовности к работе с системными файлами. При правильном подходе и понимании структуры VCL, разработчики могут улучшить визуальное восприятие своих приложений, сделав их более удобными и интуитивно понятными для конечного пользователя.

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

Пользователи сталкиваются с проблемой изменения цвета заголовка MDI-окон в среде разработки Delphi 12, где по умолчанию используется белый цвет, что может быть неприемлемо для определенных дизайнов.


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

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




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


:: Главная :: MDI приложения ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-03-15 07:57:16/0.0065350532531738/0