Page 11 of 16

Re: La nueva apariencia de EasyReport

PostPosted: Thu Oct 02, 2014 8:49 am
by mastintin
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


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"

Re: La nueva apariencia de EasyReport

PostPosted: Thu Oct 02, 2014 10:58 am
by mastintin
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 ) ...

Re: La nueva apariencia de EasyReport

PostPosted: Thu Oct 02, 2014 5:16 pm
by mastintin
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 ...

Re: La nueva apariencia de EasyReport

PostPosted: Thu Oct 02, 2014 5:21 pm
by cnavarro
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)

Re: La nueva apariencia de EasyReport

PostPosted: Thu Oct 02, 2014 6:37 pm
by mastintin
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

Re: La nueva apariencia de EasyReport

PostPosted: Thu Oct 02, 2014 7:20 pm
by cnavarro
No reviertas nada

Re: La nueva apariencia de EasyReport

PostPosted: Thu Oct 02, 2014 8:20 pm
by mastintin
demasiado tarde... :( , bueno el código sigue en el historial ....

Re: La nueva apariencia de EasyReport

PostPosted: Thu Oct 02, 2014 8:29 pm
by cnavarro
No te preocupes, ya lo habia bajado

Re: La nueva apariencia de EasyReport

PostPosted: Fri Oct 03, 2014 5:14 pm
by cnavarro
Manuel, a ver si te parece interesante
No lo subo hasta no saber tu opinion

Code: Select all  Expand view

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

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.

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

Re: La nueva apariencia de EasyReport

PostPosted: Fri Oct 03, 2014 7:21 pm
by mastintin
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 .

Re: La nueva apariencia de EasyReport

PostPosted: Mon Oct 06, 2014 9:18 pm
by mastintin
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.

Re: La nueva apariencia de EasyReport

PostPosted: Tue Oct 07, 2014 5:47 pm
by cnavarro
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

Re: La nueva apariencia de EasyReport

PostPosted: Tue Oct 07, 2014 7:22 pm
by mastintin
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

  AADD( aSelection, { nArea, nItem } )
 


Efectivamente tiene 2 dimensiones . Creo que lo suyo seria la opción a.

Re: La nueva apariencia de EasyReport

PostPosted: Wed Oct 08, 2014 9:16 am
by mastintin
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 .

Re: La nueva apariencia de EasyReport

PostPosted: Wed Oct 08, 2014 9:36 am
by Antonio Linares
Manuel,

has probado con oWnd:SetFocus() ?