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

Изменение цвета заголовка VirtualStringTree в Delphi при использовании оконных тем

Delphi , Синтаксис , Деревья

Заголовок 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




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


:: Главная :: Деревья ::


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-15 22:26:58/0.0051689147949219/1