gradiente en fila seleccionada en xbrowse

gradiente en fila seleccionada en xbrowse

Postby José Luis Sánchez » Thu Dec 03, 2009 2:00 pm

Hola,
¿ Es posible poner algo que no sea un color sólido para marcar la fila seleccionada en un xbrowse ? ¿ Se puede hacer un gradiente como el que hace Windows 7 en el explorador de archivos ?

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 nageswaragunupudi » Fri Dec 04, 2009 5:16 am

It is possible to have different kinds of backgrounds in XBrowse cells other than solid colors.

1. use oCol:oBrush. oBrush can be a brush object or a codeblock.
2. Can assign bitmaps to columns and use oCol:lBmpStretch := .t. to stretch the bitmap to fill the cell area.

Example of Gradient cells can be seen at
viewtopic.php?f=3&t=17545
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10633
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: gradiente en fila seleccionada en xbrowse

Postby José Luis Sánchez » Fri Dec 04, 2009 7:46 am

Thanks for yor kind answerd. It's just what I was looking for.

Regards,
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 » Fri Dec 04, 2009 9:25 am

José Luis,

Next FWH 9.12 will provide it as a standard xbrowse feature :-)

If the second color in the color pair returned by bClrStd, bClrSel, bClrSelFocus of the browse object of column object is an array of gradient colors, the row or cell will be painted with that gradient colors

El próximo FWH 9.12 lo ofrecerá como una capacidad estandard propia del xbrowse :-)

Si el segundo color en el par de colores devuelto por los datos bClrStd, bClrSel, bClrSelFocus es un array de degradados de colores, la fila o la celda se pintará con esos colores degradados
regards, saludos

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

Re: gradiente en fila seleccionada en xbrowse

Postby José Luis Sánchez » Fri Dec 04, 2009 6:30 pm

Antonio,
Yo uso una versión de xbrowse modificada que permite ajustar automáticamente el ancho de las columnas, es una versión vieja pero que funciona perfectamente. Modificando un poco la clase puedo conseguir ese aspecto que me interesa, y no se si el xbrowse que viene con FWH hace este ajuste automático.
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 Antonio Linares » Fri Dec 04, 2009 8:58 pm

José Luis,

Si nos proporcionas un ejemplo de ajuste automatico para probarlo aqui, podemos comentarte que tal funciona.

O si deseas compartir tus modificaciones con otros usuarios aqui en el foro, te estaremos muy agradecidos todos y asi podremos ir mejorando xbrowse de acuerdo a las necesidades de todos :-)
regards, saludos

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

Re: gradiente en fila seleccionada en xbrowse

Postby Antonio Linares » Sat Dec 05, 2009 6:36 am

José Luis,

El código fuente de la función XBrowse() de FWH, usada tambien desde el comando XBROWSER, es un muy buen ejemplo de como ajustar las dimensiones del dialogo y del xbrowse contenido.
regards, saludos

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

Re: gradiente en fila seleccionada en xbrowse

Postby José Luis Sánchez » Mon Dec 07, 2009 3:43 pm

Antonio,
ya que estás puesto lo suyo sería que se pudiera simular el efecto nativo de Windows7 tal como aparece en la imagen. Es hacerle un recuadro a la fila activa y el degradado al pintarla.
Saludos,

Image
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 » Tue Dec 08, 2009 2:46 am

Jose Luis,

Aqui tienes un ejemplo basado en el de Rao :-)

Image

Code: Select all  Expand view
#include 'fivewin.ch'
#include 'xbrowse.ch'

function Main()

   local oDlg, oBrw, oFont
   local nRecSel

   USE CUSTOMER ALIAS CUST
   nRecSel  := CUST->( RecNo() )

   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 ""
     
   WITH OBJECT oBrw
      :bChange          := { || nRecSel := oBrw:BookMark }
      :nRowDividerStyle := LINESTYLE_NOLINES
      :nColDividerStyle := LINESTYLE_NOLINES
      :nMarqueeStyle    := MARQSTYLE_HIGHLROW
   END

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

   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

   CLOSE CUST
   RELEASE FONT oFont

return nil

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

   if nRecSel == CUST->( RecNo() )
      GradientFill( hDC, aRect[ 1 ] - 2, aRect[ 2 ] - 3, aRect[ 3 ] + 1, aRect[ 4 ] + 5,;
                    { { 1, RGB( 220, 235, 252 ), RGB( 193, 219, 252 ) } }, .T. )
      SetBkMode( hDC, 1 )
      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: 42097
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: gradiente en fila seleccionada en xbrowse

Postby José Luis Sánchez » Tue Dec 08, 2009 8:16 am

Queda realmente bonito !!!

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 » Tue Dec 08, 2009 11:04 am

FiveWin nos permite hacer lo que queramos :-)

Su grado de libertad y de posibilidades es muy grande :-)
regards, saludos

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

Re: gradiente en fila seleccionada en xbrowse

Postby acuellar » Tue Dec 08, 2009 1:41 pm

Antonio

He compilado el ejemplo y me da error que no encuentra la funcion RoundBox, en que libreria esta.

Gracias por la ayuda

Saludos

adhemar
Saludos,

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

Re: gradiente en fila seleccionada en xbrowse

Postby FranciscoA » Tue Dec 08, 2009 5:24 pm

Adhemar:
Omitiendo esas llamadas a RoundBox() tambien funciona el degradado. Pruébalo.
Lo único es que no llena la col de la flechita.
Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

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

Re: gradiente en fila seleccionada en xbrowse

Postby Antonio Linares » Tue Dec 08, 2009 6:15 pm

Adhemar,

Aqui está el código de la función RoundBox():
Code: Select all  Expand view
#pragma BEGINDUMP

#include <windows.h>
#include <hbapi.h>

HB_FUNC( ROUNDBOX )
{
   HDC hDC = ( HDC ) hb_parni( 1 );
   HBRUSH hBrush = ( HBRUSH ) GetStockObject( 5 );
   HBRUSH hOldBrush = ( HBRUSH ) SelectObject( hDC, hBrush );
   HPEN hPen, hOldPen ;

   if( hb_pcount() > 8 )
      hPen = CreatePen( PS_SOLID, hb_parnl( 9 ), ( COLORREF ) hb_parnl( 8 ) );
   else
      hPen = CreatePen( PS_SOLID, 1, ( COLORREF ) hb_parnl( 8 ) );
   
   hOldPen = ( HPEN ) SelectObject( hDC, hPen );
   hb_retl( RoundRect( hDC ,
                                 hb_parni( 2 ),
                                 hb_parni( 3 ),
                                 hb_parni( 4 ),
                                 hb_parni( 5 ),
                                 hb_parni( 6 ),
                                 hb_parni( 7 ) ) );

   SelectObject( hDC, hOldBrush );
   DeleteObject( hBrush );
   SelectObject( hDC, hOldPen );
   DeleteObject( hPen );
}

#pragma ENDDUMP
 
regards, saludos

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

Re: gradiente en fila seleccionada en xbrowse

Postby acuellar » Tue Dec 08, 2009 7:22 pm

Gracias Antonio

Ahora me da un error en oBrw:Bookmark

Tengo FWH 9.04 y no se porque, he visto en el foro que lo usan con versiones anteriores.

Gracias una vez mas por la ayuda

Saludos

Adhemar
Saludos,

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

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 17 guests