Page 8 of 16

Re: La nueva apariencia de EasyReport

PostPosted: Sat Sep 27, 2014 4:10 pm
by mastintin
Me parece perfecto lo de añadir el gris setup en el mismo dialogo .
He subido el código de inicial de tscript ...

Re: La nueva apariencia de EasyReport

PostPosted: Sat Sep 27, 2014 6:20 pm
by cnavarro
mastintin wrote:Me parece perfecto lo de añadir el gris setup en el mismo dialogo .
He subido el código de inicial de tscript ...


Lo del Check Code (probado y funcionando)

Re: La nueva apariencia de EasyReport

PostPosted: Sat Sep 27, 2014 7:11 pm
by cnavarro
No veo por qué no pinta correctamente los gets

Re: La nueva apariencia de EasyReport

PostPosted: Sat Sep 27, 2014 8:18 pm
by mastintin
cnavarro wrote:No veo por qué no pinta correctamente los gets

Yo estuve toda una tarde buscando soluciones , la conclusión a la que llegue es que si cambias de pestaña el ell folder cuando vuelves a el ya se pinta bien .
El problema radica en que creamos primero el folder y lo visualizamos ( al ser un ventana no modal ) y luego le colocamos los controles con lo que no se hace un repintado completo .
Esto no se soluciona con sysrefresh() pues no tenemos nada pendiente de pintar , ni con un refresh() ya que no tenemos nada nuevo que pintar .
Lo suyo es y solo con el folder activo ( los otros se repintan al selecionarlos ) , ocultarlo con un hide() mientras se crean los controles , así evitamos parpadeos y demás efectos raros y una vez tenemos pintados los contralos un show() para enseñal el folder completo -

Re: La nueva apariencia de EasyReport

PostPosted: Sat Sep 27, 2014 8:23 pm
by cnavarro
Manuel
Efectivamente yo he probado con las posibles soluciones que indicas, ademas de :Default(), Refresh de los dialogos, del Folder, etc en el On Init de la ventana sin ningun resultado.
Pero en el dialogo de Report Setting aunque te cambies de pestaña, sigue pintandolo mal

-------------------- EDITADO ----------------------
En el Folder derecho, lo "solucione" cambiando el orden de las pestañas y funciona, sin embargo, en el izquierdo aunque ponga la OPTION 2, al ir a la primera sigue sin pintarlo correctamente

------------------ EDITADO ------------------------------
Las pruebas parecen indicarme que sólo ocurre con los gets, y que los demás controles se pintan correctamente (sigo con las pruebas)

----------------- EDITADO -------------------------------
Cambiando el FolderEx por Folder, funciona correctamente

----------------- EDITADO ---------------------------------------
Al hacer pruebas me he encontrado que los dialogos de otras pestañas se siguen viendo en el dialogo actual ( de fondo )

Por ejemplo:
Prueba a cambiar en la linea 2844 de EReport.Prg
oDlg := oER:oFldI:aDialogs[ nD ]


por

Code: Select all  Expand view

oDlg := oClone( oER:oFldI:aDialogs[ nD ] )
 


------------------ EDITADO ---------------------------------------------------
Si en la clase TFolderEx cambio la linea 356 ( Version FWH 14.08 ) por

Code: Select all  Expand view

      DEFINE DIALOG oDlg OF Self STYLE nOR( WS_CHILD , 0 ); //If( ! ::oWnd:IsKindOf( "TDIALOG"), WS_CLIPCHILDREN, 0 ) );
 


Los gets se muestran correctamente, aunque el combobox sigue sin aparecer

------------------ EDITADO ---------------------------------------------------
Pero en este caso, al cambiar de pestaña, el combo si aparece

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 2:22 pm
by mastintin
Creo que hasta se corrigen los problemas con la clase Folderex , a pesar de quedar muy aparente , deberíamos volver a la clase Folder normal ademas de no dar problemas cosméticos nos proporciona mas compatibilidad con los que tengan versiones viejas de fwh

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 5:17 pm
by cnavarro
mastintin wrote:Creo que hasta se corrigen los problemas con la clase Folderex , a pesar de quedar muy aparente , deberíamos volver a la clase Folder normal ademas de no dar problemas cosméticos nos proporciona mas compatibilidad con los que tengan versiones viejas de fwh


Manuel, he creado una clase derivada de TFolderEx que "corrige", de momento, el problema (solo contiene el metodo New, y el FolderEx lo ponemos en un TPanel)
Si te parece, lo subo, lo pruebas y comentamos.
La compatibilidad con versiones anteriores no es problema

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 5:58 pm
by mastintin
Cristobal he estado haciendo unas modificaciones en TErscrit , para arreglar algunas cosas que faltaban , pero me encuentro con este código y no se como se usan estos paramentos . ¿ Alguien puede darnos algo de luz ?
Code: Select all  Expand view

 oScript:Run( "Script", ::oVRD )
 

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 6:33 pm
by cnavarro
Manuel, el código ASCII de los dos puntos ( : ) es el 58
No se si te servirá de algo
Aunque creo que lo preguntas es en relacion al contenido de la llamada al método, no?

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 6:42 pm
by mastintin
Eso fue un error del copia y pega ... :shock: :?
Yo me refería a que nuestro Metodo Run no tiene parámetros y el que usaba el Tscript de OZS parece que si en concreto
:oScript:Run( "Script", ::oVRD ) pasa un literal "Script" y el objeto EASYREPORT .
Seria bueno saber como se usaban esos parámetros para recreado en nuestra clase

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 6:53 pm
by cnavarro
mastintin wrote:Eso fue un error del copia y pega ... :shock: :?
Yo me refería a que nuestro Metodo Run no tiene parámetros y el que usaba el Tscript de OZS parece que si en concreto
:oScript:Run( "Script", ::oVRD ) pasa un literal "Script" y el objeto EASYREPORT .
Seria bueno saber como se usaban esos parámetros para recreado en nuestra clase


Ya me he dado cuenta después de contestarte :shock: :cry:
Lo mismo que tú es lo que he estado buscando en mi baul de los recuerdos

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 6:57 pm
by mastintin
Me autorespondo ,indagando un poco por los ejemplos originales de easyreport se encuentra un archivo : ERStartScript1.prg ... esto me ilumino :D . El texto "script" es el nombre de la función a ejecutar , e ::ovrd es el parámetro a pasar ...
osea desde run se le pasa la función y los parámetros y esta ejecuta pudiendo así controlar la ejecución desde un archivo externo .

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 7:26 pm
by cnavarro
Muy bien Manuel, genial

------------------ EDITADO --------------------------
Por cierto, no veo donde se le indica el .prg (se supone que es externo, no?) que ha de ejecutar
He mirado los ficheros de definiciones y areas y no lo veo :D

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 7:47 pm
by cnavarro
cnavarro wrote:
mastintin wrote:Creo que hasta se corrigen los problemas con la clase Folderex , a pesar de quedar muy aparente , deberíamos volver a la clase Folder normal ademas de no dar problemas cosméticos nos proporciona mas compatibilidad con los que tengan versiones viejas de fwh


Manuel, he creado una clase derivada de TFolderEx que "corrige", de momento, el problema (solo contiene el metodo New, y el FolderEx lo ponemos en un TPanel)
Si te parece, lo subo, lo pruebas y comentamos.
La compatibilidad con versiones anteriores no es problema


Manuel, lo he subido
Hay que incluir el nuevo fichero con la clase en el eReport.mak
No lo modifico en el repositorio porque no quiero modificar los paths que cada uno tenga definidos

Re: La nueva apariencia de EasyReport

PostPosted: Sun Sep 28, 2014 8:41 pm
by mastintin
cnavarro wrote:Por cierto, no veo donde se le indica el .prg (se supone que es externo, no?) que ha de ejecutar
He mirado los ficheros de definiciones y areas y no lo veo :D

Code: Select all  Expand view

CLASS ERStart
   DATA cRptFile, cMode, cPrinter, cScript, cRDD
 


la DATA cScript es el nombre del archivo a leer
Code: Select all  Expand view

METHOD RunScript() CLASS ERStart
   LOCAL oScript := TErScript():New( MEMOREAD( ::cScript ) )   //leemos archivo

   oScript:lPreProcess := .T.
   oScript:Compile()

   IF !EMPTY( oScript:cError )
      MsgStop( "Error in script:" + CRLF + CRLF + ALLTRIM( oScript:cError ), "Error" )
   ELSE
      oScript:Run( "Script", ::oVRD )
   ENDIF

RETURN .T.
 


Ahora lo del run ... no se realmente como funcionaba el original Tscript , me da que funcionaba por macrosustitución o algo similar ... nada que ver con el sistema que usamos , indagando un poco lo que mas se aproxima para poder realizar un código similar seria esto :
Code: Select all  Expand view


  ::oHbr := hb_compileFromBuf( PRG, "harbour", "-n", "-w3", "-es2", "-q0" )
  HANDLE_HRB := hb_hrbload( ::oHbr )
  HANDLE_FUN := HB_HRBGETFUNSYM( HANDLE_HRB, cFunction )
  HANDLE_FUN:EVAL()


Todo este código está sacado de la lista de Harbour y esta poco documentado , ademas creo que con xHarbour no funciona ( no lo se a fecha de hoy )
El problema es que no veo como pasarle parámetros a la función ...
En el metodo run que tenemos ahora si podríamos pasarle parámetros sin problemas , tendríamos que desestimar la posibilidad de tener en el archivo externo varias funciones ( solo una función por archivo ) ...
Code: Select all  Expand view

METHOD Run( p1,p2,p3,p4 ) CLASS TErScript
   local cResult, bOldError
   FReOpen_Stderr( "comp.log", "w" )
   ::compile()
   ::cError := MemoRead( "comp.log" )
   if ! Empty( ::oHrb )
      BEGIN SEQUENCE
      bOldError = ErrorBlock( { | o | DoBreak( o ) } )
      hb_HrbRun( ::oHrb,p1,p2p,p3,p4 )  // pasamos parametros al código
      END SEQUENCE
      ErrorBlock( bOldError )
   endif

RETURN nil