FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Browse con Vista de Window 7
Posts: 1713
Joined: Tue Oct 28, 2008 06:26 PM

Browse con Vista de Window 7

Posted: Tue Feb 02, 2010 12:27 PM
Antonio
Estoy usando la función que nos pasaste para que la barra se vea como Windows 7
Funciona bien, lo que quiero es que la primera columna sea de otro color.
Hago lo siguiente:

Code (fw): Select all Collapse
Function Muestra(aTexto)
       DEFINE FONT oBig  NAME "Courier New" SIZE  0,-13
       DEFINE FONT oFont NAME "Courier New" SIZE 0,-11
       DEFINE FONT oFont1 NAME "Arial" SIZE 4, -9.8
       DEFINE DIALOG oDlgView FROM nDWTop, nDWLeft TO nDWBottom, nDWRight PIXEL TITLE "Muestra archivo "
      
         oBrw1:= TXBrowse():New( oDlgView )
         WITH OBJECT oBrw1
            :nMarqueeStyle := MARQSTYLE_HIGHLROW
            :lRecordSelector:=.F.
            :nFreeze:=1
            :nColSel:=2
            :nHeaderHeight:=8
            :lTransparent=.T.
            :SetArray( aTexto,.T. )
         END
         
         oBrw1:aCols[1]:cHeader:=.F. 
         oBrw1:aCols[1]:nWidth:=25
         oBrw1:aCols[1]:oDataFont:=oFont1
                    oBrw1:aCols[1]:cOrder:="D"
                    oBrw1:aCols[1]:nDataStrAlign:=AL_RIGHT
        oBrw1:aCols[1]:bClrStd:={|| {CLR_GRAY,nRGB(230,230,240)} }
         
         oBrw1:aCols[2]:cHeader := .F.
         oBrw1:aCols[2]:oDataFont:= { || iif( lFont,oFont,oBig) }

         AEval( oBrw1:aCols, { | oCol | oCol:bPaintText := { | oCol, hDC, cData, aRect | PaintCol( oCol, hDC, cData, aRect ) } } )
    
       oBrw1:CreateFromCode()
      
     ACTIVATE DIALOG oDlgView 

Return Nil
...

#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
*
function PaintCol( oCol, hDC, cData, aRect )

   if oCol:oBrw:VGetPos() == oBrw1:nArrayAt //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. )
      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

El resultado es:


Gracias por ayuda

Saludos

Adhemar

Saludos,



Adhemar Cuéllar

Posts: 44508
Joined: Thu Oct 06, 2005 05:47 PM

Re: Browse con Vista de Window 7

Posted: Tue Feb 02, 2010 01:39 PM

Adhemar,

En la llamada a RoundBox() cambia el valor aRect[ 1 ] - 1 por oBrw1:aCols[1]:nWidth y asi el pintado se hará a continuación de la primera columna.

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1713
Joined: Tue Oct 28, 2008 06:26 PM

Re: Browse con Vista de Window 7

Posted: Tue Feb 02, 2010 02:37 PM

Gracias Distinguido

Hice el cambio, pero no varia nada.

?oBrw1:aCols[1]:nWidth da un valor de 25

Gracias de nuevo

Saludos

Adhemar

Saludos,



Adhemar Cuéllar

Posts: 1713
Joined: Tue Oct 28, 2008 06:26 PM

Re: Browse con Vista de Window 7

Posted: Tue Feb 02, 2010 04:00 PM
Cambiandole el segundo valor 2 de RoundBox() por oBrw1:aCols[1]:nWidth

con el parametro lTransparent:=.T.
Sale asi:


sin el parametro lTransparent:=.T.

Sale asi:



La primer columna sale de otro color pero mantiene el pintado del puntero.

Gracias por la ayuda

Saludos

Adhemar

Saludos,



Adhemar Cuéllar

Posts: 44508
Joined: Thu Oct 06, 2005 05:47 PM

Re: Browse con Vista de Window 7

Posted: Wed Feb 03, 2010 12:46 AM

Adhemar,

Disculpa, hay que cambiar tambien el valor de llamada a GradientFill(), cambiando aRect[ 1 ] - 2 de igual forma

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1713
Joined: Tue Oct 28, 2008 06:26 PM

Re: Browse con Vista de Window 7

Posted: Wed Feb 03, 2010 01:15 PM

Gracias Distinguido

Ahora empieza desde la 2da. columna, el problema ahora es el ltransparent con .T. no muestra la 1ra. con fondo gris, con .F. muestra gris pero mantiene el pintado del puntero.

Saludos

Adhemar

Saludos,



Adhemar Cuéllar

Posts: 44508
Joined: Thu Oct 06, 2005 05:47 PM

Re: Browse con Vista de Window 7

Posted: Wed Feb 03, 2010 01:51 PM

Adhemar,

Puedes añadir otra llamada a GradientFill() para que rellene la zona de la primera columna, con las coordenadas de la primera columna.

Tenemos libertad de dibujar como queramos ahi :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1713
Joined: Tue Oct 28, 2008 06:26 PM

Re: Browse con Vista de Window 7

Posted: Wed Feb 03, 2010 04:06 PM
Gracias Distinguido

Lo logré haciendo otro Gradientfill como me indico el resultado es:

No me aparece la enumeración completa, pero creo que se ve bien.

como es una tabla y está ordena por la enumeración cuandoy pulso 011 me sale así:


Tengo que dar un Click sobre la línea para que recien la pinte con el gradient.

Gracias una vez mas por sus ayuda y su tiempo

Saludos

Adhemar

Saludos,



Adhemar Cuéllar

Continue the discussion