Как нарисовать выбранный элемент списка в другом цвете? - PullRequest
12 голосов
/ 19 декабря 2011

Можно ли изменить цвет фокуса выбора элемента и цвет текста в TListBox?

Когда темы не включены в проекте или стиль списка установлен на рисование владельцем, выбор выполняется вокругэлемент окрашен в синий цвет, который, я считаю, определяется глобально настройками внешнего вида системы.

Я хотел бы изменить цвет выбранных элементов на собственный цвет.

Так, например,результат будет примерно таким:

enter image description here

Обратите внимание, что последний список был изменен в Paint, чтобы проиллюстрировать пример.

Ответы [ 2 ]

19 голосов
/ 19 декабря 2011

попробуйте это:

procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
begin
  with (Control as TListBox).Canvas do
  begin
    if odSelected in State then
      Brush.Color := $00FFD2A6;

    FillRect(Rect);
    TextOut(Rect.Left, Rect.Top, (Control as TListBox).Items[Index]);
    if odFocused In State then begin
      Brush.Color := ListBox1.Color;
      DrawFocusRect(Rect);
    end;
  end;
end;
1 голос
/ 28 июня 2017

Я видел, свойство Style должно быть lbOwnerDrawFixed

...