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
Problema con xBrowse y ARRAY
Problema con xBrowse y ARRAY
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
- Daniel Garcia-Gil
- Posts: 2365
- Joined: Wed Nov 02, 2005 11:46 pm
- Location: Isla de Margarita
- Contact:
Re: Problema con xBrowse y ARRAY
Saludos...
es la posicion de la fila seleccionada tomando en cuenta la cantidad de filas visibles, es decir, si tienes 10 lineas visibles nRowSel nunca sera mayor que 10
prueba usar ::aRow[ nCol ]
oGrid:aRow[ 3 ] te devolvera el valor de la fila seleccionada en la columna 3, independientemente de la cantidad de filas visibles
presumo que pudes tener un error aqui
oGrid:aCols[1]:bBmpData := {|| IIF( oGrid:aArrayData[ oGrid:nRowSel ][1] == 1,2,1 )} ya que hablas que depende del valode de la columna 8 y estas usando el valode la columna 1 puedes cambairlo asi:
jll-fwh wrote:La variable ::nRowSel, es la posicion relativa ?
es la posicion de la fila seleccionada tomando en cuenta la cantidad de filas visibles, es decir, si tienes 10 lineas visibles nRowSel nunca sera mayor que 10
prueba usar ::aRow[ nCol ]
oGrid:aRow[ 3 ] te devolvera el valor de la fila seleccionada en la columna 3, independientemente de la cantidad de filas visibles
presumo que pudes tener un error aqui
oGrid:aCols[1]:bBmpData := {|| IIF( oGrid:aArrayData[ oGrid:nRowSel ][1] == 1,2,1 )} ya que hablas que depende del valode de la columna 8 y estas usando el valode la columna 1 puedes cambairlo asi:
Code: Select all | Expand
oGrid:aCols[1]:bBmpData := {|| IIF( oGrid:aRow[ 8 ] == 1,2,1 )} // es mas sencillo y corto
our best documentation is the source code
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Isla de Margarita Venezuela.
danielgarciagil@gmail.com
http://tdolphin.blogspot.com/
https://www.dropbox.com/referrals/NTI5N ... rc=global9
Re: Problema con xBrowse y ARRAY
Hola Daniel:
Efectivamente de este modo funciona a la perfeccion:
oGrid:aCols[1]:bBmpData := {|| IIF( oGrid:aRow[ 8 ] == 1,2,1 )}
Muchas gracias por tu ayuda. Gracias a gente como tu, otros vemos el sol entre los nubarrones.
Gracias por tu tiempo y ayuda.
Un saludo
JLL
Efectivamente de este modo funciona a la perfeccion:
oGrid:aCols[1]:bBmpData := {|| IIF( oGrid:aRow[ 8 ] == 1,2,1 )}
Muchas gracias por tu ayuda. Gracias a gente como tu, otros vemos el sol entre los nubarrones.
Gracias por tu tiempo y ayuda.
Un saludo
JLL
Libreria: FWH/FWH1109 + Harbour 5.8.2 + Borland C++ 5.8.2
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Editor de Recursos: PellecC
ADA, OURXDBU
S.O: XP / Win 7 /Win10
Blog: http://javierlloris.blogspot.com.es/
e-mail: javierllorisprogramador@gmail.com
Re: Problema con xBrowse y ARRAY
Otra opción
Saludos
Anser
Code: Select all | Expand
oGrid:aCols[1]:bBmpData := { || iif( oGrid:aArrayData[oGrid:nArrayAt][8] == 1, 2, 1) }
Saludos
Anser