2011-12-19 12 views
12

Czy można zmienić kolor zaznaczenia elementu i kolor tekstu w TListBox?Jak narysować wybrany element pola listy w innym kolorze?

Gdy motywy nie są włączone w projekcie lub styl pola listy jest ustawiony na losowanie właściciela, zaznaczenie wokół elementu jest pomalowane na niebiesko, co, jak sądzę, jest globalnie zdefiniowane przez ustawienia wyglądu systemu.

Chciałbym zmienić kolor wybranych elementów na kolor niestandardowy.

Więc przykład, wynik będzie coś takiego:

enter image description here

Uwaga ostatnia listbox został zmodyfikowany w programie Paint, aby zilustrować przykładem.

Odpowiedz

18

spróbuj tego:

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

działa rewelacyjnie dzięki @SimaWB –

+4

@Craig - upewnij się, użytkownicy nie mają podobny kolor okna tekstowego. –

+0

Dzięki @Sertac rozważę to. –

0

Widziałem, nieruchomości Styl musi być lbOwnerDrawFixed

Powiązane problemy