2011-12-19 14 views
12

¿Es posible cambiar el color de enfoque y el color del texto de selección de elementos en un TListBox?¿Cómo se dibuja el elemento del cuadro de lista seleccionado en un color diferente?

Cuando los temas no están habilitados en el proyecto, o el estilo del cuadro de lista está establecido en draw del propietario, la selección alrededor del elemento está pintada de azul, que creo que está definida globalmente por la configuración de apariencia del sistema.

Me gustaría cambiar el color de los elementos seleccionados a un color personalizado.

Así un ejemplo, el resultado sería algo como esto:

enter image description here

Nota el último cuadro de lista se ha modificado de pintura para ilustrar el ejemplo.

Respuesta

18

intente esto:

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

obras excelentes gracias @SimaWB –

+4

@Craig - Asegúrese de que los usuarios no tienen el color del texto ventana similar. –

+0

Gracias @Sertac lo consideraré. –

0

vi, propiedad Style tiene que ser lbOwnerDrawFixed

Cuestiones relacionadas