La nueva apariencia de EasyReport

Re: La nueva apariencia de EasyReport

Postby mastintin » Thu Oct 02, 2014 8:49 am

Cristobal , encontrado el responsable ....
El codigo se añadio el 15/09 , de momento lo dejo comentado a ver si vemos el motivo de incluirlo ....

Code: Select all  Expand view  RUN


function AreaProperties( nArea )
.....
   if cOldAreaText <> MEMOREAD( oER:aAreaIni[ nArea ] )
         Add2Undo( "", 0, nArea, cOldAreaText )
      endif

      OpenFile( oER:cDefIni, .T., )  // aqui esta ... se añadio el dia 15/09

   endif

return .T.


 


He subido unos cambios que evitan el bug , espero que no tengamos "efectos secundarios"
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby mastintin » Thu Oct 02, 2014 10:58 am

cnavarro wrote:Es que lo de las pestañas para este tema no me acaba de convencer

yo tenia pensado algo similar esteticamante hablando a esto :
viewtopic.php?f=3&t=29362
Me refiero un xbrowse que tenga propiedad - valor tipo a lo que se usa en Access y demas lenguajes . si existe un cambio en algun valor grabamos , si cambia el elemento reasignamos valores al xbrowse ... ( supongo que tendriamos que usar arrays ) ...
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby mastintin » Thu Oct 02, 2014 5:16 pm

He subido un código muy reducido ,sin gran función aún para ver como quedaria colocar un inspector en el folder derecho , es un prototipo y de momento solo cambia los datos cuando cambias de area activa selecionando en las ventanas hijas , y solo con Areas , y no edita los datos .
A ver como lo ves ...
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby cnavarro » Thu Oct 02, 2014 5:21 pm

Manuel, tal y como te dije ayer tengo unos dias complicadillos
Pero, por lo que comentas, aun sin haberlo visto, te aseguro que sigue la linea que tenia pensado (mi idea incluso pasaba por que se actualizara simplemente pasando el raton por encima del objeto, evidentemente si no me penalizaba excesivamente la velocidad). Con eso conseguíamos "eliminar" el dialogo de propiedades, pero si quieres y tienes otros aspectos que ir tocando pendientes, dejámelo a mi.
Ando hasta arriba (fin de mes)
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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: La nueva apariencia de EasyReport

Postby mastintin » Thu Oct 02, 2014 6:37 pm

Ok, para no liarnos voy a revertir los cambios . Así puedes empezar el código a tu gusto.
Yo seguiré reduciendo variables publicas y otras cosas pendientes
No tenemos prisa pues lo que existe funciona y no tenemos bugs pendientes
Tómalo con calma y que pase rápido
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby cnavarro » Thu Oct 02, 2014 7:20 pm

No reviertas nada
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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: La nueva apariencia de EasyReport

Postby mastintin » Thu Oct 02, 2014 8:20 pm

demasiado tarde... :( , bueno el código sigue en el historial ....
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby cnavarro » Thu Oct 02, 2014 8:29 pm

No te preocupes, ya lo habia bajado
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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: La nueva apariencia de EasyReport

Postby cnavarro » Fri Oct 03, 2014 5:14 pm

Manuel, a ver si te parece interesante
No lo subo hasta no saber tu opinion

Code: Select all  Expand view  RUN

//----------------------------------------------------------------------------//

function ShowItem( i, nArea, cAreaIni, aFirst, nElemente, aIniEntries, nIndex )

   local cTyp, cName, nTop, nLeft, nWidth, nHeight, nFont, oFont, hDC, nTrans, lTrans
   local nColText, nColPane, nOrient, cFile, nBorder, nColor, nColFill, nStyle, nPenWidth
   local nRndWidth, nRndHeight, nBarcode, nPinWidth, cItemDef
   local lRight  := .F.
   local lCenter := .F.
   local cTool   := ""

   /*
// Text   : say| name| ID| show| deleteable| editable| top| left| width| height| font| text color| background color| orientation | border | transparent
// Image  : say| name| ID| show| deleteable| editable| top| left| width| height| filename| border
// Graphic: say| style| ID| show| deleteable| editable| top| left| width| height| color | fill color | Style | Pen Size
// Barcode: say| value| ID| show| deleteable| editable| top| left| width| height| barcode font | color | fill color | orientation | transparent | Pin width


   */


   if aIniEntries = NIL
      cItemDef := AllTrim( GetPvProfString( "Items", AllTrim(STR(i,5)) , "", cAreaIni ) )
   ELSE
      cItemDef := GetIniEntry( aIniEntries,, "",, nIndex )
   endif

   if .NOT. EMPTY( cItemDef ) .AND. VAL( GetField( cItemDef, 4 ) ) <> 0

      cTyp      := UPPER(AllTrim( GetField( cItemDef, 1 ) ))
      cName     := GetField( cItemDef, 2 )
      nTop      := oER:nRulerTop + ER_GetPixel( VAL( GetField( cItemDef, 7 ) ) )
      nLeft     := oER:nRuler    + ER_GetPixel( VAL( GetField( cItemDef, 8 ) ) )
      nWidth    := ER_GetPixel( VAL( GetField( cItemDef, 9 ) ) )
      nHeight   := ER_GetPixel( VAL( GetField( cItemDef, 10 ) ) )

      if aFirst[1] = .F.
         aFirst[2] := nTop
         aFirst[3] := nLeft
         aFirst[4] := nWidth
         aFirst[5] := nHeight
         aFirst[6] := i
         aFirst[1] := .T.
      endif

      if cTyp = "TEXT"

         nFont    := VAL( GetField( cItemDef, 11 ) )
         nColText := VAL( GetField( cItemDef, 12 ) )
         nColPane := VAL( GetField( cItemDef, 13 ) )
         nOrient  := VAL( GetField( cItemDef, 14 ) )
         nBorder  := VAL( GetField( cItemDef, 15 ) )
         nTrans   := VAL( GetField( cItemDef, 16 ) )

         oFont:= IIF( nFont = 0, oEr:oAppFont, oER:aFonts[nFont] )
         lCenter := IIF( nOrient = 2, .T. , .F. )
         lRight := IIF( nOrient = 3, .T. , .F. )

         SetBKMode( oEr:oMainWnd:hDC, 1 )

         /*
         aItems[nArea,i] := TSSay():New( nTop, nLeft, ;
            {|| cName }, aWnd[nArea],, oFont,,, ;
            lCenter, lRight,, .T., .T., nColText, nColPane,, ;
            nWidth, nHeight, .F., .T., .F., .F., .F., IIF( nTrans = 1, .T., .F. ) )
         */


         aItems[nArea,i] := TSay():New( nTop, nLeft, ;
            {|| cName }, aWnd[nArea], , oFont, ;
            lCenter, lRight, ( nBorder = 1 .OR. oGenVar:lShowBorder ), .T., ;
            oER:GetColor( nColText ), oER:GetColor( nColPane ), nWidth, nHeight, .F., .T., .F., .F., .F. )

         SetBKMode( oEr:oMainWnd:hDC, 0 )

         cTool := " Tipo:        " + Chr( 9 ) + "TSAY" + CRLF + ;
                  " Top:         " + Chr( 9 ) + Str( nTop, 10 ) + CRLF + ;
                  " Left:        " + Chr( 9 ) + Str( nLeft, 10 ) + CRLF + ;
                  " Width:       " + Chr( 9 ) + Str( nWidth, 10 ) + CRLF + ;
                  " Height:      " + Chr( 9 ) + Str( nHeight, 10 ) + CRLF + ;
                  " Contenido    " + Chr( 9 ) + cName  + CRLF + ;
                  " Font:        " + Chr( 9 ) + oFont:cFaceName + CRLF + ;
                  " Font:        " + Chr( 9 ) + Str( oFont:nHeight, 10 ) + CRLF + ;
                  " Color Texto: " + Chr( 9 ) + Str( oER:GetColor( nColText ), 10 ) + CRLF + ;
                  " Color Fondo: " + Chr( 9 ) + Str( oER:GetColor( nColPane ), 10 ) + CRLF + ;
                  " Alineacion:  " + Chr( 9 ) + if( nOrient = 1, "LEFT",if( nOrient = 2, "CENTER", "RIGHT") ) + CRLF + ;
                  " Border:      " + Chr( 9 ) + if( ( nBorder = 1 .OR. oGenVar:lShowBorder ), " SI ", " NO ") + CRLF + ;
                  " Transparente:" + Chr( 9 ) + iif( nTrans = 1, " SI ", " NO " ) + CRLF

         /*
         [ <oSay> := ] TSay():New( <nRow>, <nCol>, <{cText}>,;
            [<oWnd>], [<cPict>], <oFont>, <.lCenter.>, <.lRight.>, <.lBorder.>,;
            <.lPixel.>, <nClrText>, <nClrBack>, <nWidth>, <nHeight>,;
            <.design.>, <.update.>, <.lShaded.>, <.lBox.>, <.lRaised.> )
         */


      ELSEif cTyp = "IMAGE"

         cFile   := AllTrim( GetField( cItemDef, 11 ) )
         nBorder := VAL( GetField( cItemDef, 12 ) )

         aItems[nArea,i] := TImage():New( nTop, nLeft, nWidth, nHeight,,, ;
            IIF( nBorder = 1, .F., .T.), aWnd[nArea],,, .F., .T.,,, .T.,, .T. )
         aItems[nArea,i]:Progress(.F.)
         aItems[nArea,i]:LoadBmp( VRD_LF2SF( cFile ) )

         cTool := " Tipo:        " + Chr( 9 ) + "TIMAGE" + CRLF + ;
                  " Top:         " + Chr( 9 ) + Str( nTop, 10 ) + CRLF + ;
                  " Left:        " + Chr( 9 ) + Str( nLeft, 10 ) + CRLF + ;
                  " Width:       " + Chr( 9 ) + Str( nWidth, 10 ) + CRLF + ;
                  " Height:      " + Chr( 9 ) + Str( nHeight, 10 ) + CRLF + ;
                  " Contenido    " + Chr( 9 ) + cFile  + CRLF + ;
                  " Border:      " + Chr( 9 ) + if( ( nBorder = 1 .OR. oGenVar:lShowBorder ), " SI ", " NO ") + CRLF


         /*
         [ <oBmp> := ] TImage():New( <nRow>, <nCol>, <nWidth>, <nHeight>,;
            <cResName>, <cBmpFile>, <.NoBorder.>, <oWnd>,;
            [\{ |nRow,nCol,nKeyFlags| <uLClick> \} ],;
            [\{ |nRow,nCol,nKeyFlags| <uRClick> \} ], <.scroll.>,;
            <.adjust.>, <oCursor>, <cMsg>, <.update.>,;
            <{uWhen}>, <.pixel.>, <{uValid}>, <.lDesign.> )
         */


      ELSEif IsGraphic( cTyp )

         nColor     := VAL( GetField( cItemDef, 11 ) )
         nColFill   := VAL( GetField( cItemDef, 12 ) )
         nStyle     := VAL( GetField( cItemDef, 13 ) )
         nPenWidth  := VAL( GetField( cItemDef, 14 ) )
         nRndWidth  := ER_GetPixel( VAL( GetField( cItemDef, 15 ) ) )
         nRndHeight := ER_GetPixel( VAL( GetField( cItemDef, 16 ) ) )

         aItems[nArea,i] := TBitmap():New( nTop, nLeft, nWidth, nHeight, "GRAPHIC",, ;
             .T., aWnd[nArea],,, .F., .T.,,, .T.,, .T. )
         aItems[nArea,i]:lTransparent := .T.

         aItems[nArea,i]:bPainted = {| hDC, cPS | ;
            DrawGraphic( hDC, cTyp, nWidth, nHeight, oER:GetColor( nColor ), oER:GetColor( nColFill ), ;
                         nStyle, nPenWidth, nRndWidth, nRndHeight ) }

         cTool := " Tipo:        " + Chr( 9 ) + "GRAPHIC" + CRLF + ;
                  " Top:         " + Chr( 9 ) + Str( nTop, 10 ) + CRLF + ;
                  " Left:        " + Chr( 9 ) + Str( nLeft, 10 ) + CRLF + ;
                  " Width:       " + Chr( 9 ) + Str( nWidth, 10 ) + CRLF + ;
                  " Height:      " + Chr( 9 ) + Str( nHeight, 10 ) + CRLF + ;
                  " Contenido    " + Chr( 9 ) + "    " + CRLF + ;
                  " Color:       " + Chr( 9 ) + Str( oER:GetColor( nColor ), 10 ) + CRLF + ;
                  " Color Fondo: " + Chr( 9 ) + Str( oER:GetColor( nColFill ), 10 ) + CRLF + ;
                  " Border:      " + Chr( 9 ) + if( ( nBorder = 1 .OR. oGenVar:lShowBorder ), " SI ", " NO ") + CRLF + ;
                  " Transparente:" + Chr( 9 ) + if( aItems[nArea,i]:lTransparent, " SI ", " NO " ) + CRLF

      ELSEif cTyp = "BARCODE" .AND. lProfi

         nBarcode    := VAL( GetField( cItemDef, 11 ) )
         nColText    := VAL( GetField( cItemDef, 12 ) )
         nColPane    := VAL( GetField( cItemDef, 13 ) )
         nOrient     := VAL( GetField( cItemDef, 14 ) )
         lTrans      := IIF( VAL( GetField( cItemDef, 15 ) ) = 1, .T., .F. )
         nPinWidth   := ER_GetPixel( VAL( GetField( cItemDef, 16 ) ) )

         aItems[nArea,i] := TBitmap():New( nTop, nLeft, nWidth, nHeight, "GRAPHIC",, ;
             .T., aWnd[nArea],,, .F., .T.,,, .T.,, .T. )
         aItems[nArea,i]:lTransparent := .T.

         aItems[nArea,i]:bPainted = {| hDC, cPS | ;
            DrawBarcode( hDC, cName, 0, 0, nWidth, nHeight, nBarCode, oER:GetColor( nColText ), ;
                         oER:GetColor( nColPane ), nOrient, lTrans, nPinWidth ) }

         cTool := " Tipo:        " + Chr( 9 ) + "BARCODE" + CRLF + ;
                  " Top:         " + Chr( 9 ) + Str( nTop, 10 ) + CRLF + ;
                  " Left:        " + Chr( 9 ) + Str( nLeft, 10 ) + CRLF + ;
                  " Width:       " + Chr( 9 ) + Str( nWidth, 10 ) + CRLF + ;
                  " Height:      " + Chr( 9 ) + Str( nHeight, 10 ) + CRLF + ;
                  " Contenido    " + Chr( 9 ) + cName  + CRLF + ;
                  " Color:       " + Chr( 9 ) + Str( oER:GetColor( nColText ), 10 ) + CRLF + ;
                  " Color Fondo: " + Chr( 9 ) + Str( oER:GetColor( nColPane ), 10 ) + CRLF + ;
                  " Border:      " + Chr( 9 ) + if( ( nBorder = 1 .OR. oGenVar:lShowBorder ), " SI ", " NO ") + CRLF + ;
                  " Transparente:" + Chr( 9 ) + if( lTrans, " SI ", " NO " ) + CRLF

      endif

      if cTyp = "BARCODE" .AND. lProfi = .F.
         //Dummy
      ELSE
         aItems[nArea,i]:lDrag := .T.
         ElementActions( aItems[nArea,i], i, cName, nArea, cAreaIni, cTyp )
      endif

      ++nElemente

   endif
   if Valtype( aItems[nArea,i] ) = "O"
      aItems[nArea,i]:cToolTip := cTool
   endif

return .T.

//----------------------------------------------------------------------------//
 
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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: La nueva apariencia de EasyReport

Postby mastintin » Fri Oct 03, 2014 7:21 pm

Cristobal por mi perfecto lo del tooltip , subelo sin problema .
Yo he subido un código donde separo en tras funciones independientes la carga de datos de un área , el dialogo de edición y el grabado . He usado un array para los datos , el mismo array podremos usarlo tanto para el dialogo como para un xbrowse si al final colocamos un inspector .
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby mastintin » Mon Oct 06, 2014 9:18 pm

Cristobal , necesito un guante ... :D
Tenemos un comportamiento que no es ( bajo mi punto de vista ) del todo correcto .
Cuando hacemos un click sobre un área no activa este cambia , esto es correcto . Si el área tiene un elemento seleccionado me voy a otro área y luego vuelvo ,el elemento anterior vuelve a quedar seleccionado , esto ya no lo veo tan correcto , yo creo que tendría que volver sin ningún elemento seleccionado . Aún mas, si estamos en un área que tiene un elemento seleccionado ,al hacer click sobre una parte de ese área que no tenga elementos , el elemento deberían deselecionarse. ¿ Estoy en lo correcto ?
Si es corrrecto , necesito un cable con el código , llevo todo el día intentando cambiarlo y no encuentro donde .... a ver si cuatro ojos ven mas .
Saludos.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby cnavarro » Tue Oct 07, 2014 5:47 pm

mastintin wrote:Cristobal , necesito un guante ... :D
Tenemos un comportamiento que no es ( bajo mi punto de vista ) del todo correcto .
Cuando hacemos un click sobre un área no activa este cambia , esto es correcto . Si el área tiene un elemento seleccionado me voy a otro área y luego vuelvo ,el elemento anterior vuelve a quedar seleccionado , esto ya no lo veo tan correcto , yo creo que tendría que volver sin ningún elemento seleccionado . Aún mas, si estamos en un área que tiene un elemento seleccionado ,al hacer click sobre una parte de ese área que no tenga elementos , el elemento deberían deselecionarse. ¿ Estoy en lo correcto ?
Si es corrrecto , necesito un cable con el código , llevo todo el día intentando cambiarlo y no encuentro donde .... a ver si cuatro ojos ven mas .
Saludos.


Un guante no, la dos manos :D
Ese "bug" ya lo habia detectado:
1.- Debería "Unselect" cuando dentro de un area se pincha en una zona vacia (sea la misma u otra) -> en esto estaba ya, a ver si hoy estoy mas sembrado
2.- Hay que tomar una decision: si se permite a) seleccionar items de distintas areas para, por ejemplo, darle las mismas características, o, b) solo del area actual
Creo que de momento habría que enfocarlo con el apartado a), ya que no se si el array que utiliza para guardar los items seleccionados tiene dos dimensiones { Area, item }
Pero si a la hora de desarrollarlo habría que tenerlo presente
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
User avatar
cnavarro
 
Posts: 6549
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: La nueva apariencia de EasyReport

Postby mastintin » Tue Oct 07, 2014 7:22 pm

cnavarro wrote:[
Creo que de momento habría que enfocarlo con el apartado a), ya que no se si el array que utiliza para guardar los items seleccionados tiene dos dimensiones { Area, item }
Pero si a la hora de desarrollarlo habría que tenerlo presente


Code: Select all  Expand view  RUN

  AADD( aSelection, { nArea, nItem } )
 


Efectivamente tiene 2 dimensiones . Creo que lo suyo seria la opción a.
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby mastintin » Wed Oct 08, 2014 9:16 am

En busca del bug , parece que he localizado el motivo por el que se produce ...
El tema es que cuando se cambia de una ventana a otra , cambiamos la ventana activa , pero a su vez le estas damos el foco al control que lo tenia la última vez que estaba activo , lo mismo pasa cuando hacemos click sobre un area vacio , le damos el foco a la ventana y a su vez al ultimo control con foco .
No vale quitarle la selección ( eso ya lo tengo mas o menos controlado ) , tenemos que hacer que ningun control de la ventana tenga foco.
Quizas sea una tonteria , pero como puedo hacer que una ventana se vuelva activa , pero ninguno de los controles tenga foco ? .
con eso estaría arreglado el bug, creo yo .
User avatar
mastintin
 
Posts: 1516
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Postby Antonio Linares » Wed Oct 08, 2014 9:36 am

Manuel,

has probado con oWnd:SetFocus() ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42122
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

PreviousNext

Return to EasyReport, EasyDialog y EasyPreview

Who is online

Users browsing this forum: No registered users and 1 guest