Заголовок VirtualStringTree в Delphi имеет свойство 'Background', но при попытке изменить цвет, он не меняется. Подозреваю, что дерево отрисовывается с использованием тем Windows. Как можно изменить цвет?
Альтернативный ответ
Заголовок VirtualStringTree имеет свойство 'Background', но при попытке изменить цвет, он не меняется. Возможно, дерево отрисовывается с использованием тем Windows.
Как можно изменить цвет?
Подтвержденный ответ
Вы можете использовать свойство THeader.Background, но вам придется исключить toThemeAware из TreeOptions.PaintOptions. Это отключит темы, как уже было указано в комментарии TLama выше.
Я рекомендую использовать события OnAdvancedHeaderDraw и OnHeaderDrawQueryElements. Для того, чтобы они сработали, нужно включить hoOwnerDraw в Header.Options.
В событии OnHeaderDrawQueryElements установите Elements на (по крайней мере) [hpeBackground], а в событии OnAdvancedHeaderDraw выполните пользовательское отрисовку.
procedure TfrmMain.MyVSTHeaderDrawQueryElements(Sender: TVTHeader;
var PaintInfo: THeaderPaintInfo; var Elements: THeaderPaintElements);
begin
Elements := [hpeBackground];
end;
procedure TfrmMain.MyVSTAdvancedHeaderDraw(Sender: TVTHeader;
var PaintInfo: THeaderPaintInfo; const Elements: THeaderPaintElements);
begin
if hpeBackground in Elements then
begin
PaintInfo.TargetCanvas.Brush.Color := clFuchsia; // <-- ваш цвет здесь
if Assigned(PaintInfo.Column) then
DrawFrameControl(PaintInfo.TargetCanvas.Handle, PaintInfo.PaintRectangle, DFC_BUTTON, DFCS_FLAT or DFCS_ADJUSTRECT); // <-- я думаю, что это сохраняет стиль фона заголовка, но не уверен в этом
PaintInfo.TargetCanvas.FillRect(PaintInfo.PaintRectangle);
end;
end;
Примечание: лучшим решением было бы обратиться к автору компонента с просьбой реализовать эту функцию.
Заголовок VirtualStringTree в Delphi не меняет цвет при попытке изменить свойство 'Background', возможно из-за использования тем Windows.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS