Estimados usuarios de Xailer,
Hoy os quiero hablar del control TListView. Ese gran desconocido 😉 Este control es propio del API de Windows y básicamente es un Browse que permite mostrar la información de la misma forma que lo muestra el explorador de archivos del propio Windows. Posee los siguientes tipos de vista: Icon, SmallIcon, List, Tile y Details.
El Browse (TBrowse y sus heredados) que incorpora Xailer se parece a un TListView con vista ‘Details’. Cuando queremos mostrar la información de esa forma, estilo rejilla, el browse de Xailer es infinitamente más potente que TListView. Sin embargo, hay ocasiones en la que el TListView puede ser mejor candidato para los datos a mostrar. Obviamente cuando por el número de elementos a mostrar una vista del tipo distinto de ‘Details’ sea más adecuada, pero también puede ser un gran candidato cuando necesitemos agrupar los distintos elementos del browse o mostrar un ‘checkbox’ en cada uno de ellos.
Hasta Xailer 5 el control estaba bastante limitado ya que no se podía personalizar casi nada, pero ahora ha mejorada completamente su funcionalidad permitiendo hacer cosas como esta:
Y este ha sido todo el código necesario para conseguirlo:
METHOD ListView1DrawCell( oSender, oItem, nColumn, nClrText, nClrPane, hDC, aRect ) CLASS TForm1 LOCAL nWidth IF nColumn == 0 RETURN 0 // Notify columns one by one ELSEIF nColumn == 1 SelectObject( hDC, ::oFontBold:Handle ) ELSE SelectObject( hDC, ::oFont:Handle ) IF nColumn == 5 InflateRect( aRect, -1, -1 ) nWidth := Int( ( aRect[ 3 ] - aRect[ 1 ] ) * oItem:aData[ 4 ] / ::nMaxSize ) aRect[ 3 ] := aRect[ 1 ] + nWidth FillRect( hDC, aRect, ::oBrushGauge:Handle ) RETURN 2 // Do not paint anything ENDIF ENDIF RETURN Nil
Como veis toda su consigue sobrecargando su evento OnDrawCell que es muy fácil de hacer. Espero que os guste esta importante mejora que he realizado al control. Os animo a que empecéis a usar el control TListView cuanto antes.
Un saludo
Ignacio Ortiz de Zúñiga
Equipo de Xailer