RE:pintar columnas de listview
A priori no se ve tan fácil como un StringGrid. A título orientativo, para la primer columna tendrías que usar el evento OnCustomDrawItem (o el evento OnAdvancedCustomDrawItem), y para las otras columnas tendrías que usar el evento OnCustomDrawItem (o el evento OnAdvancedCustomDrawSubItem), donde el parámetro Subitem te indicará la columna (1 = segunda columna, 2 = tercera columna, etc.). Como sea, obviamente la propiedad OwnerDraw debe ser True.
La dificultad mayor estriba en que a diferencia del evento OnDrawCell del StringGrid tú tienes que calcular la posición del rectángulo en el canvas para saber donde pintar el fondo y escribir el texto, lo que estaría todo a tu cargo.
Ernesto De Spirito
http://www.latiumsoftware.com/es/index.php