gradiente en fila seleccionada en xbrowse

Re: gradiente en fila seleccionada en xbrowse

Postby Antonio Linares » Tue Dec 08, 2009 8:00 pm

Adhemar,

Esta versión es mas simple y no necesita los bookmarks:
Code: Select all  Expand view  RUN
#include 'fivewin.ch'
#include 'xbrowse.ch'

function Main()

   local oDlg, oBrw, oFont

   USE CUSTOMER ALIAS CUST

   DEFINE FONT oFont NAME 'Tahoma' SIZE 0, -14
   
   DEFINE DIALOG oDlg SIZE 640,440 PIXEL ;
      FONT oFont TITLE 'XBrowse Gradient Rows'

   @ 10, 10 XBROWSE oBrw OF oDlg ;
      SIZE 300, 200 PIXEL ;
      AUTOCOLS ALIAS 'CUST' BACKGROUND ""
     
   oBrw:nRowDividerStyle = LINESTYLE_NOLINES
   oBrw:nColDividerStyle = LINESTYLE_NOLINES
   oBrw:nMarqueeStyle    = MARQSTYLE_HIGHLROW

   AEval( oBrw:aCols, { | oCol | oCol:bPaintText := { | oCol, hDC, cData, aRect | ;
          PaintCol( oCol, hDC, cData, aRect ) } } )

   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

   oFont:End()

return nil

static function PaintCol( oCol, hDC, cData, aRect )

   if oCol:oBrw:VGetPos() == Cust->( OrdKeyNo() )
      GradientFill( hDC, aRect[ 1 ] - 2, aRect[ 2 ] - 3, aRect[ 3 ] + 1, aRect[ 4 ] + 5,;
                    { { 1, RGB( 220, 235, 252 ), RGB( 193, 219, 252 ) } }, .T. )
      RoundBox( hDC, 2, aRect[ 1 ] - 1, WndWidth( oCol:oBrw:hWnd ) - 22, aRect[ 3 ] + 1, 2, 2,;
                RGB( 235, 244, 253 ), 1 )
      RoundBox( hDC, 1, aRect[ 1 ] - 2, WndWidth( oCol:oBrw:hWnd ) - 21, aRect[ 3 ] + 2, 2, 2,;
                RGB( 125, 162, 206 ), 1 )
   endif

   SetTextColor( hDC, 0 )
   DrawTextEx( hDC, cData, aRect, oCol:nDataStyle )

return nil
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: gradiente en fila seleccionada en xbrowse

Postby acuellar » Tue Dec 08, 2009 8:19 pm

Gracias Antonio

Ahora da un error en BACKGROUND "", lo elimino y funciona, pero cuando avanza no pone en blanco el anterior
no se si sera por esto.

Gracias de nuevo

Saludos

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1644
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: gradiente en fila seleccionada en xbrowse

Postby Antonio Linares » Tue Dec 08, 2009 8:40 pm

Adhemar,

Pruebalo asi:
Code: Select all  Expand view  RUN

   @ 10, 10 XBROWSE oBrw OF oDlg ;
      SIZE 300, 200 PIXEL ;
      AUTOCOLS ALIAS 'CUST'
     
   oBrw:SetColor( "N/W" )
   oBrw:lTransparent = .T.

   ...
 
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: gradiente en fila seleccionada en xbrowse

Postby acuellar » Tue Dec 08, 2009 8:54 pm

Gracias Antonio

solo con oBrw:lTransparent = .T. Funcionó perfecto

Lo aplique a un xBrowse que muestra un array colocando

if oCol:oBrw:VGetPos() == oBrw:nArrayAt

Funciona, pero cuando pasa por una linea vacia no muestra en gradient

Gracias una vez mas por la ayuda, se ve muy bonito

Saludos

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1644
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: gradiente en fila seleccionada en xbrowse

Postby Antonio Linares » Tue Dec 08, 2009 9:14 pm

Adhemar,

Bien, me alegro de que esté funcionando :-)

Cuando dices una línea vacia, te refieres a un elemento del array que está vacio "" ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: gradiente en fila seleccionada en xbrowse

Postby acuellar » Tue Dec 08, 2009 9:19 pm

Asi es, un elemento vacio ""

Lo he solucionado aumentandole el caracter 255 al final en el momento de cargar la tabla.

Gracias distinguido por su ayuda valiosa

Saludos

Adhemar
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1644
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: gradiente en fila seleccionada en xbrowse

Postby Antonio Linares » Tue Dec 08, 2009 9:33 pm

Bien! :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: gradiente en fila seleccionada en xbrowse

Postby José Luis Sánchez » Thu Dec 10, 2009 3:26 pm

Me pregunto que pasa cuando en la fila hay un bitmap. No se si con esta manera de pintar el degradado cuando haya un bitmap en la fila el fondo del bitmap aparecerá degradado. Si alguien lo puede probar y confirmar que funciona bien lo agradecería.
Saludos,
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: gradiente en fila seleccionada en xbrowse

Postby Antonio Linares » Thu Dec 10, 2009 7:50 pm

José Luis,

Si, para mostrar los bitmaps habría que hacerlo desde la función PaintCol()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: gradiente en fila seleccionada en xbrowse

Postby carlos vargas » Thu Dec 10, 2009 8:22 pm

Antonio, una consulta

en le código de roundbox, hDC no seria una variable tipo long en lugar de una integer?, es que casi siempre que creo funciones wrapper, y estas necesitan
hDC lo pongo a long?


Code: Select all  Expand view  RUN

HB_FUNC( ROUNDBOX )
{
   HDC hDC = ( HDC ) hb_parnl( 1 );                            //<-----------------hbparnl en lugar de hbparni
   HBRUSH hBrush = ( HBRUSH ) GetStockObject( 5 );
   HBRUSH hOldBrush = ( HBRUSH ) SelectObject( hDC, hBrush );
 
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
User avatar
carlos vargas
 
Posts: 1721
Joined: Tue Oct 11, 2005 5:01 pm
Location: Nicaragua

Re: gradiente en fila seleccionada en xbrowse

Postby Antonio Linares » Thu Dec 10, 2009 10:12 pm

Carlos,

Si, es preferible usar un long en vez de int :-)

Lo que ocurre es que en 32 bits ese valor también puede ser admisible pues admite un rango de valores muy grande.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42118
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: PARA JOSE LUIS SANCHEZ

Postby FranciscoA » Mon Aug 02, 2010 1:22 pm

José Luis Sánchez wrote:Me pregunto que pasa cuando en la fila hay un bitmap. No se si con esta manera de pintar el degradado cuando haya un bitmap en la fila el fondo del bitmap aparecerá degradado. Si alguien lo puede probar y confirmar que funciona bien lo agradecería.
Saludos,


Hola José Luis. ¿Lograste resolverlo? Estoy en eso pero no lo consigo. Una ayudita no me vendría mal.
Saludos
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2159
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: gradiente en fila seleccionada en xbrowse

Postby José Luis Sánchez » Mon Aug 16, 2010 7:56 am

Hola,
Retomo el tema del gradiente para los que tenemos versiones antiguas de FWH. Si en vez de el gradiente nos contentamos con pintar los rebordes de la fila seleccionada con las dos lineas, la de fuera azul y la de dentro blanca, creo que se solucionarían los problemas de pintado cuando la última fila no tiene datos ( cData está vacio ). Creo que esto se podría hacer en el método Paint(), igual que se pinta el selector de fila ( el triangulito ), cuando se ha terminado de pintar todas las columnas hacer los dos rebordes. Estoy mirando cómo hacer esto pero no doy con ello, si alguien me pudiera ayudar lo agradecería.
Saludos,
José Luis
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: gradiente en fila seleccionada en xbrowse

Postby José Luis Sánchez » Mon Aug 16, 2010 10:05 am

Hola,
Ya he encontrado la manera de hacerlo. En el métido DrawLine() de XBrowse buscar las líneas:
Code: Select all  Expand view  RUN
if ::lRecordSelector
      if lSelected
         PalBmpDraw( hDC, nRow + ( nHeight / 2 ) - 8, RECORDSELECTOR_WIDTH - 15,;
                     ::hBmpRecSel, 0, 9, 14,, .t., ::nRecSelColor )

y añadir el pintado de los bordes de esta manera, y luego seguir con el else de no lSelected
Code: Select all  Expand view  RUN
            RoundBox( hDC, 2, nRow , ::BrwWidth()- 6, nRow+::nRowHeight, 2, 2,;
                                     RGB( 235, 244, 253 ), 1 )
            RoundBox( hDC, 1, nRow -1, ::BrwWidth()- 5, nRow+::nRowHeight+1, 2, 2,;
                                     RGB( 125, 162, 206 ), 1 )
      else
         FillRect( hDC,;

No es el gradiente, pero el efecto es bastante parecido y sin problemas de columnas vacias. Igual hay otra manera de hacerlo, o en versiones actuales de FWH ya funciona esto, pero yo salgo del paso con esto.
Cualquier aportación será bienvenida.
Saludos,
José Luis
User avatar
José Luis Sánchez
 
Posts: 556
Joined: Thu Oct 13, 2005 9:23 am
Location: Novelda - Alicante - España

Re: gradiente en fila seleccionada en xbrowse

Postby Daniel Garcia-Gil » Mon Aug 16, 2010 10:23 am

User avatar
Daniel Garcia-Gil
 
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 pm
Location: Isla de Margarita

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 32 guests