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,
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,
It is possible to have different kinds of backgrounds in XBrowse cells other than solid colors.
Example of Gradient cells can be seen at
&
Thanks for yor kind answerd. It's just what I was looking for.
Regards,
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
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
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 ![]()
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.


#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 nilQueda realmente bonito !!!
Saludos,
FiveWin nos permite hacer lo que queramos ![]()
Su grado de libertad y de posibilidades es muy grande ![]()
Adhemar:
Omitiendo esas llamadas a RoundBox() tambien funciona el degradado. Pruébalo.
Lo único es que no llena la col de la flechita.
Saludos.
#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