====== wListView ====== CLASS WListView FROM WControl PROPERTY cClassId INIT "lvw" PROPERTY aItems INIT {} // Array de WItemListView PROPERTY cType INIT xc_Default // xc_Avatar, xc_Collapsible, xc_Expandable, xc_Popout PROPERTY lTitleItem INIT .F. // Se presenta el cTitle de los WItemListView PROPERTY oIconEdit AS WIcon PROPERTY cIconEdit INIT "" WRITE INLINE ::oIconEdit:cIcon := Value READ INLINE ::oIconEdit:cIcon // Icono para la función de editar PROPERTY cOnClickEdit INIT "" // Funcion del CGI a llamar cuando se pulse el Edit PROPERTY oIconDelete AS WIcon PROPERTY cIconDelete INIT "" WRITE INLINE ::oIconDelete:cIcon := Value READ INLINE ::oIconDelete:cIcon // Icono para la función de editar PROPERTY cOnClickDelete INIT "" // Funcion del CGI a llamar cuando se pulse el Borrar PROPERTY cAjaxBevel INIT "" // Bevel donde se incrusta el resultado de la llamada al Ajax PROPERTY oAvatarStyle AS WStyle // Stylos para la imagen del Avatar PROPERTY cAjaxBevelEdit INIT "" PROPERTY cAjaxBevelDelete INIT "" PROPERTY lAjaxWaitON INIT .T. // Incluye un indicador de actividad mientras se ejecuta la función Ajax // PROPERTY lModalResult INIT .F. // Indicamos que al pulsar Edit la ejecución va ha salir por un Bevel Modal PROPERTY aParams INIT {} // Parametros extras a enviar al CGI {{"Param1","Valor1},{"Param2","Valor2"}} PROPERTY cClrPaneDetail INIT "" WRITE INLINE ::FcClrPaneDetail := ::CheckClr(Value) // Color del fondo del detalle PROPERTY cClrText INIT "" WRITE INLINE ::FcClrText := ::CheckClr(Value) // Color del Texto PROPERTY cClrTextDetail INIT "" WRITE INLINE ::FcClrTextDetail := ::CheckClr(Value) // Color del Texto del Detalle // Propiedades para la Paginación // Hay que alimentar aItems con todos los elemtos, el envia a la web solo los de la página a la vista. // Hay que crear un Bevel que contendra a todo el ListView para poder actualizarlo al paginar PROPERTY nItemInPage INIT 0 // Si el valor es > 0 se realiza paginación property nPage INIT 1 // Página a presentar PROPERTY cOnChangePage INIT "" // Función del CGI cuando cambiamos de página PROPERTY cAjaxPages INIT "" // Bevel al que enviarle el ListView por Ajax PROPERTY lAutoPage INIT .T. // Recibimos todos los datos y es el ListView el que selecciona lo que va en la página PROPERTY nMaxItems INIT 0 // Solo se utiliza si lAutoPage == .F. PROPERTY lMultiPagesFirstLast INIT .t. PROPERTY nMultiPagesDots INIT 0 // ------------------------------ METHOD Create() // Creación del Control METHOD AddItem(nRowId,cImage,cTitle,aText,lEdit,lDelete,aParams,cIcon) METHOD AddArrayItems( aItems ) // Para crear los Items desde un array {{nRowId,cImage,cTitle,aText,lEdit,lDelete,aParams,cIcon,cClrPane}} /* TODO: La parte de DELETE no esta optimizada, por defecto uso ajax y el cambio lo aplica sobre el propio listView TODO: Preparar una versión que no pagine automáticamente, sino que le enviamos directamente la página en aItems */ PROPERTY cIconOpen INIT "" //"keyboard_arrow_down" PROPERTY cIconClose INIT "" //"keyboard_arrow_right" METHOD New( oParent ) METHOD CambiaIcono METHOD CreateItem ( oItem ) DATA nFinItem // Eran locales, pasadas a Data por createitem DATA nIniItem ENDCLASS