2011-12-19 10 views
12

È possibile modificare il colore di messa a fuoco e il colore del testo di selezione dell'elemento in un TListBox?Come si disegna l'elemento della casella di riepilogo selezionato con un colore diverso?

Quando i temi non sono abilitati nel progetto o lo stile della casella di riepilogo è impostato su proprietario-disegno, la selezione intorno all'elemento è dipinta di blu, che a mio avviso è definita globalmente dalle impostazioni di aspetto del sistema.

Vorrei cambiare il colore degli elementi selezionati con un colore personalizzato.

Così, ad esempio, il risultato sarebbe qualcosa di simile a questo:

enter image description here

Nota l'ultima casella di riepilogo è stato modificato in Paint per illustrare l'esempio.

risposta

18

provare questo:

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

opere eccellenti grazie @SimaWB –

+4

@ Craig - accontentarsi che gli utenti non dispongono di simili colore della finestra di testo. –

+0

Grazie a @Sertac, lo prenderò in considerazione. –

0

ho visto, proprietà Style deve essere lbOwnerDrawFixed

Problemi correlati