Hola a todos:
A ver si alguien me dice como solucionar este problemilla:
Tengo definido un xBrowse mediante ARRAY, que en funcion del valor de la columna 8 del array , debe de pintar un BMP en la 1 columna y pintar la fila de negro o rojo, hasta aqui bien.
El problema viene cuando cambio el valor, ya que no refresca bien el Browse, para que visualize la fila en rojo o negro y que se pueda ver el BMP, tengo que hacer click con el raton sobre los registros o subir y bajar con las teclas del cursor.
NOTA: Cargo los datos en ON INIT.
La declaracion de las columnas en un Browse mediante ARRAY es como la declaro?
La variable ::nRowSel, es la posicion relativa ?
Para refrescar el Browse, uso como siempre, Refresh(), que detalle hay que hacer con xBrowse para que repinte todo bien? o que estoy haciendo mal para que no funcione bien?
Yo siempre he usado ListBox y el Browse de Hernan y funciona perfectamente, el xBrowse es una maravilla pero aun tengo alguna cosilla que no se como funciona todavia, quiero usar xBrowse por su potencia.
Aqui dejo la declaracion del Browse mediante ARRAY y la funcion que carga los datos en el ARRAY.
REDEFINE XBROWSE oGrid ARRAY aDetNid ID 200 OF oDlg
oGrid:l2007 := .F.
oGrid:nMarqueeStyle := MARQSTYLE_HIGHLROW
oGrid:nColDividerStyle := LINESTYLE_BLACK
oGrid:lColDividerComplete := .T.
oGrid:bClrSel := {|| { CLR_BLACK, nRGB( 192,192,192 )}}
oGrid:bClrSelFocus := {|| { CLR_WHITE, nRGB( 128,128,255 )}}
oGrid:nHeaderLines := 2 // Numero de lineas en la cabeceras
oGrid:nDataLines := 1 // Numero de lineas en los detalles
oGrid:lFooter := .F. // Inserta pies en cada columna
oGrid:nDataLines := 1 // Lineas de separacion entre lineas del detalles
oGrid:lHScroll := .F. // Barra Horizontal
oGrid:lVScroll := .F. // Barra Ventical
oGrid:SetArray( aDetNid )
oGrid:aCols[1]:AddResource("ON")
oGrid:aCols[1]:AddResource("OFF")
oGrid:aCols[1]:cHeader := ""+CRLF+"Est"
oGrid:aCols[1]:nWidth := 25
oGrid:aCols[1]:bBmpData := {|| IIF( oGrid:aArrayData[ oGrid:nRowSel ][1] == 1,2,1 )}
oGrid:aCols[2]:cHeader := ""+CRLF+"Huevo"
oGrid:aCols[2]:nDataStrAlign := 2 // Alineacion: 1.- derecha 2.- centrado 3.- izquierda
oGrid:aCols[2]:nHeadStrAlign := 2 // Alineacion: 1.- derecha 2.- centrado 3.- izquierda
oGrid:aCols[2]:nWidth := 60
oGrid:aCols[2]:bLDClickData := bLDClickData
oGrid:aCols[2]:bRClickData := bRClickData
oGrid:aCols[2]:bClrStd := {|| { iif( oGrid:aArrayData[ oGrid:nRowSel ][1] == 2, CLR_HRED, CLR_BLACK ), CLR_WHITE } }
oGrid:aCols[3]:cHeader := "Fecha"+CRLF+"Puesta"
oGrid:aCols[3]:nDataStrAlign := 2
oGrid:aCols[3]:nHeadStrAlign := 2
oGrid:aCols[3]:nWidth := 80
oGrid:aCols[3]:bLDClickData := bLDClickData
oGrid:aCols[3]:bRClickData := bRClickData
oGrid:aCols[3]:bClrStd := {|| { iif( oGrid:aArrayData[ oGrid:nRowSel ][1] == 2, CLR_HRED, CLR_BLACK ), CLR_WHITE } }
oGrid:aCols[4]:cHeader := "Fecha Prevista"+CRLF+"Nacimiemto"
oGrid:aCols[4]:nDataStrAlign := 2
oGrid:aCols[4]:nHeadStrAlign := 2
oGrid:aCols[4]:nWidth := 90
oGrid:aCols[4]:bLDClickData := bLDClickData
oGrid:aCols[4]:bRClickData := bRClickData
oGrid:aCols[4]:bClrStd := {|| { iif( oGrid:aArrayData[ oGrid:nRowSel ][1] == 2, CLR_HRED, CLR_BLACK ), CLR_WHITE } }
oGrid:aCols[5]:cHeader := "Fecha"+CRLF+"Control"
oGrid:aCols[5]:nDataStrAlign := 2
oGrid:aCols[5]:nHeadStrAlign := 2
oGrid:aCols[5]:nWidth := 80
oGrid:aCols[5]:bLDClickData := bLDClickData
oGrid:aCols[5]:bRClickData := bRClickData
oGrid:aCols[5]:bClrStd := {|| { iif( oGrid:aArrayData[ oGrid:nRowSel ][1] == 2, CLR_HRED, CLR_BLACK ), CLR_WHITE } }
oGrid:aCols[6]:cHeader := "Fecha"+CRLF+"Fecundación"
oGrid:aCols[6]:nDataStrAlign := 2
oGrid:aCols[6]:nHeadStrAlign := 2
oGrid:aCols[6]:nWidth := 80
oGrid:aCols[6]:bLDClickData := bLDClickData
oGrid:aCols[6]:bRClickData := bRClickData
oGrid:aCols[6]:bClrStd := {|| { iif( oGrid:aArrayData[ oGrid:nRowSel ][1] == 2, CLR_HRED, CLR_BLACK ), CLR_WHITE } }
oGrid:aCols[7]:cHeader := "Fecha"+CRLF+"Nacimiento"
oGrid:aCols[7]:nDataStrAlign := 2
oGrid:aCols[7]:nHeadStrAlign := 2
oGrid:aCols[7]:nWidth := 80
oGrid:aCols[7]:bLDClickData := bLDClickData
oGrid:aCols[7]:bRClickData := bRClickData
oGrid:aCols[7]:bClrStd := {|| { iif( oGrid:aArrayData[ oGrid:nRowSel ][1] == 2, CLR_HRED, CLR_BLACK ), CLR_WHITE } }
oGrid:aCols[8]:cHeader := ""+CRLF+"Estado"
oGrid:aCols[8]:nDataStrAlign := 3
oGrid:aCols[8]:nHeadStrAlign := 2
oGrid:aCols[8]:nWidth := 250
oGrid:aCols[8]:bLDClickData := bLDClickData
oGrid:aCols[8]:bRClickData := bRClickData
oGrid:aCols[8]:bClrStd := {|| { iif( oGrid:aArrayData[ oGrid:nRowSel ][1] == 2, CLR_HRED, CLR_BLACK ), CLR_WHITE } }
Y la funcion que carga los datos:
/*------------------------------------------------------------------------------*/
STATIC Function PasaTABLA()
/*------------------------------------------------------------------------------*/
*/ Pasamos los datos de la BD a la tabla aDetNid /*
If ! MiDosBuscar( "NidPar", 1, Nidadas->CodNid )
Return NIL
End
ASize( aDetNid, 0 )
WHILE NidPar->CodNid == Nidadas->CodNid .AND. ! NidPar->( Eof() )
AAdd( aDetNid, { IIF( NidPar->Estado == aEstadoH[8], 2, 1 ),; // Control de Huevo Eclosionado
NidPar->NHuevo ,; // Nº Huevo
NidPar->FPuest ,; // Fecha puesta
NidPar->FPNaci ,; // Fecha Prev.Nacimiento
NidPar->FContr ,; // Fecha Control
NidPar->FFecun ,; // Fecha fecundacion
NidPar->FNacim ,; // Fecha nacimiento
NidPar->Estado }) // Estado
NidPar->( DbSkip() )
SysRefresh()
END
oGrid:Refresh()
oGrid:SetFocus()
Return NIL
Un saludo
JLL
Libreria: FWH/FWHX 8.12 28/December/2008
Harbour: Harbour 1.0.1 Rev 9361 1999-2008
Compilador: Borland C++ 5.5.1 versión 32bits