La nueva apariencia de EasyReport
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: La nueva apariencia de EasyReport
Nice
Thank you
Thank you
Regards, Greetings
Try FWH. You will enjoy it's simplicity and power.!
Try FWH. You will enjoy it's simplicity and power.!
- lucasdebeltran
- Posts: 1303
- Joined: Tue Jul 21, 2009 8:12 am
- Contact:
Re: La nueva apariencia de EasyReport
Enhorabuena, tiene una pinta increíble.
Muchas gracias. Many thanks.
Un saludo, Best regards,
Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]
Implementando MSVC 2010, FWH64 y ADO.
Abandonando uso xHarbour y SQLRDD.
Un saludo, Best regards,
Harbour 3.2.0dev, Borland C++ 5.82 y FWH 13.06 [producción]
Implementando MSVC 2010, FWH64 y ADO.
Abandonando uso xHarbour y SQLRDD.
Re: La nueva apariencia de EasyReport
Que os parece si cuando no seleccionamos ningun ejemplo y tenemos la aplicacion en "blanco", los iconos aparecieseen en gris y no solo los prompts de los iconos?
Tambien para las opciones no disponibles en cada momento
Tambien para las opciones no disponibles en cada momento
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
- Antonio Linares
- Site Admin
- Posts: 37481
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Contact:
Re: La nueva apariencia de EasyReport
Cristobal,
Muy bien!
Gracias!
Muy bien!
Gracias!
Re: La nueva apariencia de EasyReport
Entonces subo los bmps, el cambio en el código y el .rc modificado, Ok?
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Re: La nueva apariencia de EasyReport
Muy bueno.cnavarro wrote:Entonces subo los bmps, el cambio en el código y el .rc modificado, Ok?
He añadido los bmp al archivo vdrPellesC.rc y lo he subido al repositorio .
Saludos.
Re: La nueva apariencia de EasyReport
dandole vueltas al asunto de los bmps en gris .... como mejora para fivewin ... creo que existe una función ( por algún sitio la he visto ) dentro del código c de fivewin que vuelve un bmp a gris , con eso se podría implementar un metodo en la clase Tbmp que invocándolo cree un bmp en gris , y de eso cambiar la clase buttonbar con una dataclass ldisableenGris ,si no se especifica un bmp para disabled lo que hace es crearlo en gris y asignarlo . Nos evitaría tener que generar nosotros los bmps grises y tener que colocarlos dentro de los recursos , y reduciría el tamaño del fichero recursos .
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Re: La nueva apariencia de EasyReport
Así es como lo tengo yo implementado, modificando la clase btnBmp, el método LoadBitmaps, si no se ha definido el tercer bimap, convierto a gris el primero.
En las últimas versiones de FWH ha habido cambios en la clase tBtnBmp, y no lo tengo adaptado a esas versiones, pero creo que se trata solo de poner algún que otro IF y listo.
La función en C desconozco si la propia librería ya la tiene implementada, quizás no haga falta volver a incluirla, pero bueno por si la necesitáis estos son los fuentes.
Code: Select all
IF Empty(cBmpFile3)
::hBitMap3 = Bmp2Dis( ::hBitMap1 )
ENDIF
Code: Select all
#include <windows.h>
#include <hbapi.h>
#define ROSA RGB(255,0,255)
#define BLANCO RGB(255,255,255)
HB_FUNC( BMP2DIS )
{
HBITMAP hBmpMem, hOldBmp, hOldBmp2;
COLORREF nColor;
int nX;
int nY;
HDC hDC = CreateDC("DISPLAY", 0, 0, 0);
HDC hDCMem = CreateCompatibleDC( hDC );
HDC hDCMem2 = CreateCompatibleDC( hDC );
HBITMAP hBitmap = (HBITMAP) hb_parnl( 1 );
BITMAP bm;
GetObject( ( HGDIOBJ ) hBitmap, sizeof( BITMAP ), ( LPSTR ) &bm );
hBmpMem = CreateCompatibleBitmap( hDC, bm.bmWidth, bm.bmHeight );
hOldBmp = (HBITMAP) SelectObject( hDCMem, hBmpMem );
hOldBmp2 = (HBITMAP) SelectObject( hDCMem2, hBitmap );
BitBlt( hDCMem, 0,0,bm.bmWidth, bm.bmHeight, hDCMem2, 0, 0, SRCCOPY );
for (nX = 0; nX < bm.bmWidth ; nX++ )
{
for (nY = 0; nY < bm.bmHeight ; nY++ )
{
nColor = GetPixel( hDCMem, nX, nY );
if( nColor != ROSA && nColor!=BLANCO )
{
SetPixel( hDCMem, nX, nY, RGB( 192, 192, 192) );
}
}
}
SelectObject( hDCMem, hOldBmp );
SelectObject( hDCMem2, hOldBmp2 );
DeleteDC( hDCMem );
DeleteDC( hDCMem2 );
DeleteDC( hDC );
hb_retnl( (LONG) hBmpMem );
}
La función en C desconozco si la propia librería ya la tiene implementada, quizás no haga falta volver a incluirla, pero bueno por si la necesitáis estos son los fuentes.
Re: La nueva apariencia de EasyReport
Gracias Biel
La idea es muy buena Manuel
La idea es muy buena Manuel
C. Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
Si alguien te dice que algo no se puede hacer, recuerda que esta hablando de sus limitaciones, no de las tuyas.
Re: La nueva apariencia de EasyReport
Biel , lo he intentado pero o algo hago mal o no tengo el resultado esperado .
Me sale como una mancha gris en vez el icono en escala de grises , mirando el código de la funcion lo que se hace es cambiar los pixeles a gris pero siempre el mismo gris no una escala de grises ( distintos grises dependiendo del color a variar ) .
Una manera de hacerlo seria sacar el color del pixel sacar su valor de color R ( por ejemplo ) y asignarle el valor al pixel rgb( valorR , 0, 0 ) , esto en teoría debería sacar el canal r del pixel .
Me sale como una mancha gris en vez el icono en escala de grises , mirando el código de la funcion lo que se hace es cambiar los pixeles a gris pero siempre el mismo gris no una escala de grises ( distintos grises dependiendo del color a variar ) .
Una manera de hacerlo seria sacar el color del pixel sacar su valor de color R ( por ejemplo ) y asignarle el valor al pixel rgb( valorR , 0, 0 ) , esto en teoría debería sacar el canal r del pixel .
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Re: La nueva apariencia de EasyReport
Cierto, está función no convierte a escala de gris sino que pasa a gris todos los colores menos blanco y fucsia.
A mi gusta para el efecto disabled, pero si es un bmp con poco blaco y fucsia efectivamente queda una mancha. Creo que tengo otra que convierte a escala de grises, la busco.
A mi gusta para el efecto disabled, pero si es un bmp con poco blaco y fucsia efectivamente queda una mancha. Creo que tengo otra que convierte a escala de grises, la busco.
- Biel EA6DD
- Posts: 680
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Re: La nueva apariencia de EasyReport
Bmp a escala de grises
Code: Select all
#define FUCSIA RGB(255,0,255)
#define BLANCO RGB(255,255,255)
HB_FUNC( BMP2DIS )
{
HBITMAP hBmpMem, hOldBmp, hOldBmp2;
COLORREF nColor;
int nX;
int nY;
int red,green,blue;
HDC hDC = CreateDC("DISPLAY", 0, 0, 0);
HDC hDCMem = CreateCompatibleDC( hDC );
HDC hDCMem2 = CreateCompatibleDC( hDC );
HBITMAP hBitmap = (HBITMAP) hb_parnl( 1 );
BITMAP bm;
GetObject( ( HGDIOBJ ) hBitmap, sizeof( BITMAP ), ( LPSTR ) &bm );
hBmpMem = CreateCompatibleBitmap( hDC, bm.bmWidth, bm.bmHeight );
hOldBmp = (HBITMAP) SelectObject( hDCMem, hBmpMem );
hOldBmp2 = (HBITMAP) SelectObject( hDCMem2, hBitmap );
BitBlt( hDCMem, 0,0,bm.bmWidth, bm.bmHeight, hDCMem2, 0, 0, SRCCOPY );
for (nX = 0; nX < bm.bmWidth ; nX++ )
{
for (nY = 0; nY < bm.bmHeight ; nY++ )
{
nColor = GetPixel( hDCMem, nX, nY );
if( nColor != FUCSIA && nColor!=BLANCO )
{
red = GetRValue( nColor ) ;
green = GetGValue( nColor ) ;
blue = GetBValue( nColor ) ;
nColor = (0.3 * red + 0.59 * green + 0.11 * blue + 0.5 );
SetPixel( hDCMem, nX, nY, RGB( nColor , nColor , nColor ) );
}
}
}
SelectObject( hDCMem, hOldBmp );
SelectObject( hDCMem2, hOldBmp2 );
DeleteDC( hDCMem );
DeleteDC( hDCMem2 );
DeleteDC( hDC );
hb_retnl( (LONG) hBmpMem );
}
Re: La nueva apariencia de EasyReport
Muchas gracias Biel , también existia ( sabia que en algún sitio estaba ) BMPTOGRAY( hbitmap ) que pertenece a el archivo c5new.c enlazado en fivewin ....
Tu función da un resultado mas oscuro , el otro quizás en demasiado claro ... a gustos colores ... me quedo con tu función ...
Tu función da un resultado mas oscuro , el otro quizás en demasiado claro ... a gustos colores ... me quedo con tu función ...
Re: La nueva apariencia de EasyReport
Listo tengo _ en la función BtnBmp .....
Code: Select all
CLASS TBtnBmp FROM TControl
....
DATA lDisableToGray INIT .t. // añadido
....
METHOD LoadBitmaps( )
.....
if ! Empty( cResName2 )
......
endif
if Empty( cResName3 ) .and. Empty( cBmpFile3 ) // añadido ...
IF ! Empty( cResName1 )
cResName3:= cResName1
endif
IF ! Empty( cBmpFile1 )
cBmpFile3:= cBmpFile1
endif
endif
if ! Empty( cResName3 )
IF FindResource( GetResources(), cResName3 , 10 ) != 0
....
ELSE
....
endif
IF ::lDisableToGray // añadido
::hBitmap3:= BMP2DIS( ::hBitmap1 )
endif
::HasAlpha( ::hBitmap3, BTN_DISABLE )
endif
.....
if ! Empty( cBmpFile3 )
if File( cBmpFile3 )
::cBmpFile3 = cBmpFile3
if Upper( Right( cBmpFile3, 3 ) ) == "PNG"
....
else
....
endif
IF ::lDisableToGray // añadido
::hBitmap3:= BMP2DIS( ::hBitmap1 )
endif
::HasAlpha( ::hBitmap3, BTN_DISABLE )
::cBmpFile3 = cBmpFile3
endif
endif
.....
#define FUCSIA RGB(255,0,255)
#define BLANCO RGB(255,255,255)
HB_FUNC( BMP2DIS )
{
HBITMAP hBmpMem, hOldBmp, hOldBmp2;
COLORREF nColor;
int nX;
int nY;
int red,green,blue;
HDC hDC = CreateDC("DISPLAY", 0, 0, 0);
HDC hDCMem = CreateCompatibleDC( hDC );
HDC hDCMem2 = CreateCompatibleDC( hDC );
HBITMAP hBitmap = (HBITMAP) hb_parnl( 1 );
BITMAP bm;
GetObject( ( HGDIOBJ ) hBitmap, sizeof( BITMAP ), ( LPSTR ) &bm );
hBmpMem = CreateCompatibleBitmap( hDC, bm.bmWidth, bm.bmHeight );
hOldBmp = (HBITMAP) SelectObject( hDCMem, hBmpMem );
hOldBmp2 = (HBITMAP) SelectObject( hDCMem2, hBitmap );
BitBlt( hDCMem, 0,0,bm.bmWidth, bm.bmHeight, hDCMem2, 0, 0, SRCCOPY );
for (nX = 0; nX < bm.bmWidth ; nX++ )
{
for (nY = 0; nY < bm.bmHeight ; nY++ )
{
nColor = GetPixel( hDCMem, nX, nY );
if( nColor != FUCSIA && nColor!=BLANCO )
{
red = GetRValue( nColor ) ;
green = GetGValue( nColor ) ;
blue = GetBValue( nColor ) ;
nColor = (0.3 * red + 0.59 * green + 0.11 * blue + 0.5 );
SetPixel( hDCMem, nX, nY, RGB( nColor , nColor , nColor ) );
}
}
}
SelectObject( hDCMem, hOldBmp );
SelectObject( hDCMem2, hOldBmp2 );
DeleteDC( hDCMem );
DeleteDC( hDCMem2 );
DeleteDC( hDC );
hb_retnl( (LONG) hBmpMem );
}