Cambiar color de un reglon o fila de TbBrowseMod

Foro público de Xailer en español
Responder
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Cambiar color de un reglon o fila de TbBrowseMod

Mensaje por gabo1 »

Hola,
Alguien ha realizado el cambiar el color de un reglón o fila en TbBrowseMod según la condición del valor de un campo.. que me pueda orientar ?
Saludos!
Pedro Gil
Mensajes: 115
Registrado: Lun Ene 15, 2007 7:46 pm

Re: Cambiar color de un reglon o fila de TbBrowseMod

Mensaje por Pedro Gil »

Buenas tardes,

¿Ha probado el evento OnDrawCell? Le adjunto una pequeña captura de la ayuda de Xailer.
Captura.JPG
Captura.JPG (17.53 KiB) Visto 1254 veces
Saludos.
cfuentes
Mensajes: 30
Registrado: Mié May 13, 2020 6:45 pm

Re: Cambiar color de un reglon o fila de TbBrowseMod

Mensaje por cfuentes »

Buenas tardes Gabo, tienes que usar el evento OnDrawCell (Deberás usar el evento en cada columna deseada del browse)

METHOD CatalogAccDrawCell( oSender, oCol, nIndex, xValue, cValue, nImage, nClrText, nClrPane, nState, hDC, aRect ) CLASS Estados

IF <Tu condicion>
nClrText := clBrown // Poner letra marron
ELSE
nClrText := clBlue // Poner letra azul
ENDIF

Si deseas poner las letras en negritas:

SelectObject( hDC, ::oFont:Handle ) // selecciona font por defecto
IF <Tu condicion>
SelectObject( hDC, ::oFontBold:Handle ) // Poner letras en negrita
ENDIF
Avatar de Usuario
gabo1
Mensajes: 127
Registrado: Lun Oct 13, 2014 9:42 am

Re: Cambiar color de un reglon o fila de TbBrowseMod

Mensaje por gabo1 »

Hola cFuentes
Gracias por la sugerencia. de hecho estoy probando en ese evento precisamente y funciona perfecto,
Peroooo solo sobre las columnas. lo que yo quiero es sobre las filas o reglon. Como lo hace TBrowse..
Saludos!

Código: Seleccionar todo

//------------------------------------------------------------------------------
METHOD BrwPedidosDrawCell( oSender, oCol, nIndex, xValue, cValue, nImage, nClrText, nClrPane, nState, hDC, aRect ) CLASS TFormDomicilio2021
  LOCAL oFont,hFont,cHoras,nSegundos,hPen

  hPen := CreatePen( PS_SOLID, 1, 0xDFD9C4 )
  MoveTo( hDC, aRect[ rtLEFT ], aRect[ rtBOTTOM ] -1)
  LineTo( hDC, aRect[ rtRIGHT ], aRect[ rtBOTTOM] -1, hPen)
  DeleteObject( hPen )
  nSegundos:= 0
  IF oCol:cHeader=="# Sigue"
     nClrText:= clBlue
  ELSEIF oCol:cHeader=="Folio pedido"
     nClrText:= clRed
  ELSEIF oCol:cHeader=="No. Teléfono" .OR. oCol:cHeader=="Nombre del cliente"
     oFont:= TFont():Create( "Consolas",14,0,550 )
     hFont:= SelectObject( hDC, oFont:Handle )
  ELSEIF oCol:cHeader=="Tiempo"
     oFont:= TFont():Create( "Consolas",10,0,550 )
     hFont:= SelectObject( hDC, oFont:Handle )
     IF xValue!=NIL
        IF !Empty(xValue)
           cHoras:= TimeDiff( xValue, Time() )
           nSegundos:= TimeAsSeconds(cHoras)
           cValue:= Left(cHoras, 5 )
        ENDIF
     ENDIF
  ELSEIF oCol:cHeader=="Sta"
    DO CASE
       CASE xValue=="Impresa"
            cValue:= ""
            nImage:= 3
            IF nSegundos >= 900
               // nImage:= 2
            ENDIF
       CASE xValue=="NO"
            cValue:= ""
            nImage:= 1
       OTHER
    ENDCASE
  ENDIF
  oFont:= NIL
  hFont:= NIL

RETURN NL
Pedro Gil
Mensajes: 115
Registrado: Lun Ene 15, 2007 7:46 pm

Re: Cambiar color de un reglon o fila de TbBrowseMod

Mensaje por Pedro Gil »

Buenas tardes,

¿Ha probado a controlar el parámetro "nIndex" del evento OnDrawCell, que es el número de fila que se va a pintar?

Por ejemplo:

IF nIndex == 5
nClrText := clRed
ENDIF

También tiene a su disposición el evento OnDrawActiveRow.

Saludos
Responder