Форма заголовка панели многоцветная - PullRequest
0 голосов
/ 25 января 2019

У меня вопрос о появлении формы. Я хотел бы создать приложение, которое выглядит как какое-нибудь приложение MacOS (например, Bear или даже App Store. Эти приложения характеризуются левой частью (своего рода ящиком), которая имеет цвет on1. Я хотел бы, чтобы мои формы создавались с Delphi таким же образом. Я посмотрел в Интернете и попытался, как и предполагалось, использовать стиль VCL, но есть некоторые проблемы из-за настройки dpi Windows на различных ПК, на которых запущено приложение. Поэтому мне интересно, есть ли способ достичь этой задачи кодирования. На изображении ниже вы можете увидеть, как на ПК с Windows 10

появляется обычное окно

enter image description here

Примером является приветствие с простой формой, в которую я положил панель, окрашенную в синий цвет. Как вы можете видеть, заголовок окон белого цвета, и его можно закрасить цветом с использованием стилей VCL (но в этом случае все заголовки должны быть такого цвета. Я хотел бы получить что-то вроде следующего изображения (созданного в Photoshop), на котором я провел красную линию только для того, чтобы выделить заголовок:

enter image description here

Я пытался перехватить WM_NCPAIN или другое подобное решение, но не могу найти способ достичь своей задачи. Может кто-нибудь помочь мне с этой проблемой? Большое спасибо заранее

Эрос

1 Ответ

0 голосов
/ 25 января 2019

В Windows Vista и более поздних версиях окна приложений, не относящиеся к клиенту (панель заголовка, значок, граница окна и кнопки с заголовками), контролируются DWM (диспетчером окон рабочего стола). Используя API DWM, вы можете изменить способ, которым DWM отображает фрейм окна. (цитата из MSDN ).

Есть статья Настройка пользовательской строки заголовка в Vista / Windows 7 , в которой объясняется, как это сделать с помощью Delphi. Статья также относится к Windows 8.x и Windows 10. Автор написал ряд статей на эту тему; Вы можете найти обзор здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...