2011-12-19 1 views
12

Можно ли изменить цвет выделения и цвет текста выбора пункта в TListBox?Как нарисовать выбранный элемент списка в другом цвете?

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

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

Так пример, результат будет что-то вроде этого:

enter image description here

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

ответ

18

попробовать это:

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; 
+0

отлично работает благодаря @SimaWB –

+4

@Craig - Убедитесь, что пользователи не имеют подобный цвет окна текста. –

+0

Спасибо @Sertac Я это рассмотрю. –

0

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

Смежные вопросы