Как нарисовать выбранный элемент списка в другом цвете?
Можно ли изменить цвет фокуса выбора и цвет текста в TListBox?
Если темы не включены в проекте или стиль списка задан для рисования владельца, выделение вокруг элемента будет окрашено в синий цвет, что, по моему мнению, определяется глобальными настройками внешнего вида.
Я хотел бы изменить цвет выбранных элементов на пользовательский цвет.
Таким образом, результат будет примерно таким:
![enter image description here]()
Обратите внимание, что последний список был изменен в Paint, чтобы проиллюстрировать этот пример.
Ответы
Ответ 1
попробуйте следующее:
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;
Ответ 2
Я видел, что свойство Style должно быть lbOwnerDrawFixed