La nueva apariencia de EasyReport
- Antonio Linares
- Site Admin
- Posts: 42434
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 17 times
- Been thanked: 53 times
- Contact:
Re: La nueva apariencia de EasyReport
Manuel,
La Clase TBtnBmp ya tiene soporte para bitmaps "deshabilitados"
Es la DATA cBmpFile3 y opcionalmente la cBmpFile4 (al pasar el ratón por encima del deshabilitado).
El método GetBmp() de la Clase TBtnBmp selecciona el bitmap correcto a pintar
La Clase TBtnBmp ya tiene soporte para bitmaps "deshabilitados"
Es la DATA cBmpFile3 y opcionalmente la cBmpFile4 (al pasar el ratón por encima del deshabilitado).
El método GetBmp() de la Clase TBtnBmp selecciona el bitmap correcto a pintar
- Antonio Linares
- Site Admin
- Posts: 42434
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 17 times
- Been thanked: 53 times
- Contact:
Re: La nueva apariencia de EasyReport
Manuel,
La Clase TBtnBmp ya tiene soporte para bitmaps "deshabilitados"
Es la DATA cBmpFile3 y opcionalmente la cBmpFile4 (al pasar el ratón por encima del deshabilitado).
El método GetBmp() de la Clase TBtnBmp selecciona el bitmap correcto a pintar
La Clase TBtnBmp ya tiene soporte para bitmaps "deshabilitados"
Es la DATA cBmpFile3 y opcionalmente la cBmpFile4 (al pasar el ratón por encima del deshabilitado).
El método GetBmp() de la Clase TBtnBmp selecciona el bitmap correcto a pintar
- Antonio Linares
- Site Admin
- Posts: 42434
- Joined: Thu Oct 06, 2005 5:47 pm
- Location: Spain
- Has thanked: 17 times
- Been thanked: 53 times
- Contact:
Re: La nueva apariencia de EasyReport
Manuel,
La Clase TBtnBmp ya tiene soporte para bitmaps "deshabilitados"
Es la DATA cBmpFile3 y opcionalmente la cBmpFile4 (al pasar el ratón por encima del deshabilitado).
El método GetBmp() de la Clase TBtnBmp selecciona el bitmap correcto a pintar
La Clase TBtnBmp ya tiene soporte para bitmaps "deshabilitados"
Es la DATA cBmpFile3 y opcionalmente la cBmpFile4 (al pasar el ratón por encima del deshabilitado).
El método GetBmp() de la Clase TBtnBmp selecciona el bitmap correcto a pintar
Re: La nueva apariencia de EasyReport
Antonio Linares wrote:Manuel,
La Clase TBtnBmp ya tiene soporte para bitmaps "deshabilitados"
Es la DATA cBmpFile3 y opcionalmente la cBmpFile4 (al pasar el ratón por encima del deshabilitado).
El método GetBmp() de la Clase TBtnBmp selecciona el bitmap correcto a pintar
Si , lo que cambiamos aquí es que si el botón se deshabita y no se especifica el cBmpFile3 lo que hace es coger el cBmpFile1 y lo pasa a escala de grises , de esta forma evitamos tener que crear una version gris de un bitmap ya que la creamos mediante código y evitamos también tener que incluirla en el rc y por tanto en el programa .
- Biel EA6DD
- Posts: 682
- Joined: Tue Feb 14, 2006 9:48 am
- Location: Mallorca
- Contact:
Re: La nueva apariencia de EasyReport
Buen trabajo Manuel,
me gusta tu implementación en la clase tBtnBmp, con el Data queda mas fino y permite deshabilitar la funcionalidad de una forma sencilla.
Espero que se incluya en la próxima versión de FW.
De todas formas, me gusta más todo gris que no escala de grises, pero eso es un tema de gustos personales, y dependiente del bmp convertido.
Gris
Escala de grises
me gusta tu implementación en la clase tBtnBmp, con el Data queda mas fino y permite deshabilitar la funcionalidad de una forma sencilla.
Espero que se incluya en la próxima versión de FW.
De todas formas, me gusta más todo gris que no escala de grises, pero eso es un tema de gustos personales, y dependiente del bmp convertido.
Gris
Escala de grises
Re: La nueva apariencia de EasyReport
Last edited by cnavarro on Sun Sep 07, 2014 7:33 pm, edited 1 time in total.
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: La nueva apariencia de EasyReport
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: La nueva apariencia de EasyReport
Me gusta , me gusta mucho ... cada día se trabaja mas en pantalla apaisadas por lo que no seria problema el tener continuamente desplegado el tree de los elementos .
Una opción factible es crear una data de Teasyreport llamada l800 o algo así , detectamos que la pantalla tiene resolución de 800* 600 ( o la que veamos que es adecuada ) si tiene eso o menos mantenemos el formato actual sino activamos este nuevo formato .
Otra opción y quizás mejor es añadir al INI general un nuevo valor donde activemos o no el formato se guarda en una data lNewFormato y según el valor activamos una forma u otra ....así el usuario decide...
Fantastico ....
Una opción factible es crear una data de Teasyreport llamada l800 o algo así , detectamos que la pantalla tiene resolución de 800* 600 ( o la que veamos que es adecuada ) si tiene eso o menos mantenemos el formato actual sino activamos este nuevo formato .
Otra opción y quizás mejor es añadir al INI general un nuevo valor donde activemos o no el formato se guarda en una data lNewFormato y según el valor activamos una forma u otra ....así el usuario decide...
Fantastico ....
Re: La nueva apariencia de EasyReport
Manuel
Cualquiera de las dos opciones me parece bien. Por mi parte, haz lo que consideres mejor, aunque de momento podríamos considerar simplemente valorar la resolución en la entrada de la aplicación, y preguntar simplemente si se desea ver el Tree, y mediante una variable estática configurar la aplicacion (esto teniendo en cuenta que cada dia hay menos monitores con resoluciones inferiores a 1366). Pero la configuracion en el INI y una DATA en la clase me parece lo más correcto.
Si todos los cambios que pongo en el foro, y los que tengo hechos, no los subo directamente es para no interferir en tu trabajo (aún no domino bien el Git)
Lo has probado en una pantalla de resolución superior ( 1600 ó 1920 )?
Cualquiera de las dos opciones me parece bien. Por mi parte, haz lo que consideres mejor, aunque de momento podríamos considerar simplemente valorar la resolución en la entrada de la aplicación, y preguntar simplemente si se desea ver el Tree, y mediante una variable estática configurar la aplicacion (esto teniendo en cuenta que cada dia hay menos monitores con resoluciones inferiores a 1366). Pero la configuracion en el INI y una DATA en la clase me parece lo más correcto.
Si todos los cambios que pongo en el foro, y los que tengo hechos, no los subo directamente es para no interferir en tu trabajo (aún no domino bien el Git)
Lo has probado en una pantalla de resolución superior ( 1600 ó 1920 )?
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: La nueva apariencia de EasyReport
¿ son muchos los cambios para poner esa apariencia ?
si son pocos ,coloca aquí el código y ya lo inserto ... si son muchos los cambios mandamelos al correo ....
Saludos.
si son pocos ,coloca aquí el código y ya lo inserto ... si son muchos los cambios mandamelos al correo ....
Saludos.
Re: La nueva apariencia de EasyReport
Lo he simplificado al máximo
No son muchos, aunque te pongo las funciones completas
Creo que no se me olvida nada
y
No son muchos, aunque te pongo las funciones completas
Creo que no se me olvida nada
Code: Select all | Expand
Static aPnels
//----------------------------------------------------------------------------//
function Main( P1, P2, P3, P4, P5, P6, P7, P8, P9, P10, P11, P12, P13, P14, P15 )
local i, oBrush, oIni, aTest, nTime1, nTime2, cTest, oIcon, cDateFormat
local cOldDir := hb_CurDrive() + ":\" + GetCurDir()
local cDefFile := ""
local oSpl
local nAltoSpl := 680
local cControl := "TPanel"
aPnels := {}
lChDir( cFilePath( GetModuleFileName( GetInstance() ) ) )
if P1 <> nil ; cDefFile += P1 + " " ; endif
if P2 <> nil ; cDefFile += P2 + " " ; endif
if P3 <> nil ; cDefFile += P3 + " " ; endif
if P4 <> nil ; cDefFile += P4 + " " ; endif
if P5 <> nil ; cDefFile += P5 + " " ; endif
if P6 <> nil ; cDefFile += P6 + " " ; endif
if P7 <> nil ; cDefFile += P7 + " " ; endif
if P8 <> nil ; cDefFile += P8 + " " ; endif
if P9 <> nil ; cDefFile += P9 + " " ; endif
if P10 <> nil ; cDefFile += P10 + " " ; endif
if P11 <> nil ; cDefFile += P11 + " " ; endif
if P12 <> nil ; cDefFile += P12 + " " ; endif
if P13 <> nil ; cDefFile += P13 + " " ; endif
if P14 <> nil ; cDefFile += P14 + " " ; endif
if P15 <> nil ; cDefFile += P15 + " " ; endif
cDefFile := STRTRAN( AllTrim( cDefFile ), '"' )
EP_TidyUp()
EP_LinkedToApp()
EP_SetPath( "." )
//Einf�ge-Modus einschalten
ReadInsert( .T. )
PUBLIC oER := TEasyReport():new()
//Publics deklarieren
DeclarePublics( cDefFile )
SET DELETED ON
SET CONFIRM ON
SET 3DLOOK ON
SET MULTIPLE OFF
SET DATE FORMAT to "dd.mm.yyyy"
cDateFormat := LOWER(AllTrim( oEr:GetGeneralIni( "General", "DateFormat", "")) )
SET DATE FORMAT IIF( Empty( cDateFormat ), "dd.mm.yyyy", cDateFormat )
//Open Undo database
OpenUndo()
SET HELPFILE to "VRD.HLP"
DEFINE ICON oIcon FILE ".\vrd.ico"
DEFINE BRUSH oBrush RESOURCE "background"
SetDlgGradient( oER:aClrDialogs )
DEFINE WINDOW oEr:oMainWnd VSCROLL ; //FROM 0, 0 to 50, 200 VSCROLL ;
TITLE MainCaption() ;
BRUSH oBrush MDI ;
ICON oIcon ;
MENU BuildMenu()
SET MESSAGE OF oEr:oMainWnd CENTERED 2010
DEFINE MSGITEM oMsgInfo OF oEr:oMainWnd:oMsgBar SIZE 280
oEr:oMainWnd:oMsgBar:KeybOn()
oEr:oMainWnd:oWndClient:bMouseWheel = { | nKey, nDelta, nXPos, nYPos | ;
ER_MouseWheel( nKey, nDelta, nXPos, nYPos ) }
BarMenu()
AAdd( aPnels, nil ) // Esto
aPnels[Len(aPnels)] := TPanel():New( 34, 0, nAltoSpl, 262, oEr:oMainWnd )
oEr:oMainWnd:oLeft := aPnels[Len(aPnels)]
@ 34, 262 SPLITTER oSpl ;
VERTICAL ; // PREVIOUS CONTROLS aPnels[1];
SIZE 0, nAltoSpl ;
PIXEL ;
OF oEr:oMainWnd
ACTIVATE WINDOW oEr:oMainWnd ;
MAXIMIZED ;
ON INIT ( SetMainWnd(), IniMainWindow(), ;
IIF( Empty( oER:cDefIni ), OpenFile(), SetScrollBar() ), ;
StartMessage(), SetSave( .T. ), ClearUndoRedo() ) ;
VALID ( AEVal( aWnd, { |o| if( o <> nil, o:End(), ) } ), AskSaveFiles() )
oEr:oAppFont:End()
oBrush:End()
oGenVar:oAreaBrush:End()
oGenVar:oBarBrush:End()
AEval( oGenVar:aAppFonts, {|x| x:End() } )
AEval( aFonts, {|x| IIF( x <> nil, x:End(), ) } )
CloseUndo()
lChDir( cOldDir )
return nil
//----------------------------------------------------------------------------//
Code: Select all | Expand
function ClientWindows()
local i, nWnd, cItemDef, cTitle, nWidth, nHeight, nDemoWidth
local lFirstWnd := .F.
local nTop := 0
local nWindowNr := 0
local aIniEntries := GetIniSection( "Areas", oER:cDefIni )
local cAreaFilesDir := CheckPath( oEr:GetDefIni( "General", "AreaFilesDir", "" ) )
local lReticule
nDemoWidth := 0
//Sichern
aVRDSave := ARRAY( 102, 2 )
aVRDSave[101, 1 ] := oER:cDefIni
aVRDSave[101, 2 ] := MEMOREAD( oER:cDefIni )
aVRDSave[102, 1 ] := oER:cGeneralIni
aVRDSave[102, 2 ] := MEMOREAD( oER:cGeneralIni )
//? oEr:oMainWnd:oWndClient:nHeight
for i := 1 to LEN( aIniEntries )
nWnd := EntryNr( aIniEntries[ i ] )
cItemDef := GetIniEntry( aIniEntries,, "",, i )
if nWnd <> 0 .and. !Empty( cItemDef )
if lFirstWnd = .F.
nAktArea := nWnd
lFirstWnd := .T.
endif
if Empty( cAreaFilesDir )
cAreaFilesDir := cDefaultPath
endif
if Empty( cAreaFilesDir )
cAreaFilesDir := cDefIniPath
endif
cItemDef := VRD_LF2SF( AllTrim( cAreaFilesDir + cItemDef ) )
aVRDSave[nWnd, 1 ] := cItemDef
aVRDSave[nWnd, 2 ] := MEMOREAD( cItemDef )
nWindowNr += 1
aAreaIni[nWnd] := IIF( AT( "\", cItemDef ) = 0, ".\", "" ) + cItemDef
cTitle := AllTrim( GetPvProfString( "General", "Title" , "", aAreaIni[nWnd] ) )
oGenVar:aAreaSizes[nWnd] := ;
{ Val( GetPvProfString( "General", "Width", "600", aAreaIni[nWnd] ) ), ;
Val( GetPvProfString( "General", "Height", "300", aAreaIni[nWnd] ) ) }
nWidth := ER_GetPixel( oGenVar:aAreaSizes[nWnd, 1 ] )
nHeight := ER_GetPixel( oGenVar:aAreaSizes[nWnd, 2 ] )
//nDemoWidth := nWidth
//if oGenVar:lFixedAreaWidth = .T.
// nWidth := 1200
//else
nWidth += oEr:nRuler + nAreaZugabe2
//endif
nDemoWidth := Max( nDemoWidth, nWidth )
aWnd[ nWnd ] = ER_MdiChild():New( nTop, oEr:oMainWnd:oWndClient:nLeft + 2 , nHeight + nAreaZugabe,;
nDemoWidth, cTitle, nOr( WS_BORDER ),, oEr:oMainWnd,, .F.,,,,;
oGenVar:oAreaBrush, .T., .F. ,,, , , , , 1 ) // Esto
aWnd[ nWnd ]:nArea = nWnd
aWndTitle[ nWnd ] = cTitle
lReticule = oGenVar:lShowReticule
oGenVar:lShowReticule = .F.
FillWindow( nWnd, aAreaIni[nWnd] )
ACTIVATE WINDOW aWnd[ nWnd ] ;
VALID !GETKEYSTATE( VK_ESCAPE )
oGenVar:lShowReticule := lReticule
nTop += nHeight + nAreaZugabe
endif
next
nTotalHeight := nTop
nTotalWidth := nWidth
ItemList( aPnels[1] ) // Esto
return .T.
//----------------------------------------------------------------------------//
y
Code: Select all | Expand
function ItemList( oDlg )
//local oDlg
local oTree
local oImageList, oBmp1, oBmp2
local lDlg := .T.
if empty( oDlg )
DEFINE DIALOG oDlg RESOURCE "Itemlist" TITLE GL("Item List")
oTree := TTreeView():ReDefine( 201, oDlg, 0, , .F. ,"" )
oTree:bLDblClick = { | nRow, nCol, nKeyFlags | ClickListTree( oTree ) }
oTree:bEraseBkGnd = { || nil } // to properly erase the tree background
REDEFINE BUTTON PROMPT GL("&OK") ID 101 OF oDlg ACTION oDlg:End()
ACTIVATE DIALOG oDlg CENTERED ON INIT FillTree( oTree, oDlg ) //ListTrees( oTree )
else
oTree := TTreeView():New( 0, 0, oDlg, 0, , .T., .F., 262, 680 ,"",, )
oTree:bLDblClick = { | nRow, nCol, nKeyFlags | ClickListTree( oTree ) }
oTree:bEraseBkGnd = { || nil } // to properly erase the tree background
FillTree( oTree, oDlg )
endif
return nil
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: La nueva apariencia de EasyReport
Subido al repositorio ...
He ajustado un poco el código para poder implementar el uso o no del spliter , he puesto el auto ajuste del spliter pero lo que no hace es el redimensionado del panel ... yo hoy no tocare código así que si sincronizas con el repositorio puedes subir directo los cambios .
He ajustado un poco el código para poder implementar el uso o no del spliter , he puesto el auto ajuste del spliter pero lo que no hace es el redimensionado del panel ... yo hoy no tocare código así que si sincronizas con el repositorio puedes subir directo los cambios .
- Silvio.Falconi
- Posts: 7119
- Joined: Thu Oct 18, 2012 7:17 pm
Re: La nueva apariencia de EasyReport
Only an Idea....
why not divide in sub windows as FastReport
a wndchild ( as Reportname1)
and in this wndchild a folder
TAb1 "Designer " where we can insert the designer
Tab2 "Object" where we can insert the tree object
Tab3 "Scripts" where we can see the Vrd files
Tab4 "Data" where we can show or open the fields of data we need (a tree with fields)
tab5 "Preview" where we can show the preview of the report
this for the future when we could copy and paste a part or a object from a report to another (reportname2)
only an idea ....
why not divide in sub windows as FastReport
a wndchild ( as Reportname1)
and in this wndchild a folder
TAb1 "Designer " where we can insert the designer
Tab2 "Object" where we can insert the tree object
Tab3 "Scripts" where we can see the Vrd files
Tab4 "Data" where we can show or open the fields of data we need (a tree with fields)
tab5 "Preview" where we can show the preview of the report
this for the future when we could copy and paste a part or a object from a report to another (reportname2)
only an idea ....
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
Re: La nueva apariencia de EasyReport
Silvio, gracias
Ya habia pensado en hacer una simulacion mas o menos como tu dices
Silvio, thanks
He had already thought of doing a simulation more or less as you say
Ya habia pensado en hacer una simulacion mas o menos como tu dices
Silvio, thanks
He had already thought of doing a simulation more or less as you say
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
Re: La nueva apariencia de EasyReport
Seria interesante colocar codigo al treeview para que tenga bordes ...