Получить Backgroundcolor тематического TListView

С XE2 существует несколько тем, которые могут быть использованы для вашего приложения. Например. Углерод, который изменяет цвет фона TListView на серый, помимо других вещей.

Есть ли способ получить этот цвет? TListView.Color возвращает белый цвет, если фон является каким-то серым.

Я попытался использовать StyleServices.GetElementDetails со следующим фрагментом:

var lColor: TColor;
 lDetails: TThemedElementDetails;
 if StyleServices.Enabled then
 begin
 lDetails := StyleServices.GetElementDetails(tlListviewRoot);
 StyleServices.GetElementColor(lDetails, ecFillColor, lColor);
 end;

Но GetElementColor терпит неудачу и возвращает false. Я использую неправильный параметр? Или мой подход ошибочен.

Возможные параметры можно найти здесь: TThemedListView TElementColor

Спасибо.

P.S.: Я также читал этот пост, но ответ мне пока не помог.

1 ответ

Чтобы получить цвет фона TListView с реализацией StyleHook:

uses Vcl.Themes;
var Color : TColor; 
Color := StyleServices.GetStyleColor(scListView);

licensed under cc by-sa 3.0 with attribution.