En cuanto a tu duda, la parte que no entiendo es lo del tercer color. Ya el sistema usa un color distinto para la selección.
Pero bueno, indepedientemente de porqué quieres hacerlo así te comento que TFileListBox desciende de TCustomListBox. Esta componente está diseñada para un pintado personalizado mediante su propiedad Style y su evento OnDrawItem.
De hecho, TFileListBox usa el estilo lbOwnerFixedDraw y el método DrawItem para poder dibujar los iconos de los archivos si estableces su propiedad ShowGlyphs.
Ahora bien, el problema es que tanto Style como OnDrawItem son propiedades protegidas en TCustomListBox y TFileListBox no las publica.
Entonces, la solución sería derivar una nueva clase de TFileListBox y redefinir su método DrawItem:
Código Delphi
[-]
type
TBicolorFileListBox = class(TFileListBox)
protected
procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState); override;
end;
implementation
procedure TBicolorFileListBox.DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);
begin
if odSelected in State then
Canvas.Brush.Color := clGray else if Odd(Index) then
Canvas.Brush.Color := clRed else
Canvas.Brush.Color := clYellow;
inherited;
end;
EDITO
Oops! Que me ha salido una suerte de bandera española
// Saludos