La nueva apariencia de EasyReport

User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Post 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


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 _ que evitan el bug , espero que no tengamos "efectos secundarios"
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Post 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 :
http://forums.fivetechsupport.com/viewt ... =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: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

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

Re: La nueva apariencia de EasyReport

Post 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)
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.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Post by mastintin »

Ok, para no liarnos voy a revertir _ . 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
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: La nueva apariencia de EasyReport

Post by cnavarro »

No reviertas nada
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.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Post by mastintin »

demasiado tarde... :( , bueno el código sigue en el historial ....
User avatar
cnavarro
Posts: 5792
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: La nueva apariencia de EasyReport

Post by cnavarro »

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

Re: La nueva apariencia de EasyReport

Post by cnavarro »

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

Code: Select all

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

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.

//----------------------------------------------------------------------------//
 
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.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Post 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 .
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

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

Re: La nueva apariencia de EasyReport

Post 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
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.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Post 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

  AADD( aSelection, { nArea, nItem } )
 
Efectivamente tiene 2 dimensiones . Creo que lo suyo seria la opción a.
User avatar
mastintin
Posts: 1502
Joined: Thu May 27, 2010 2:06 pm

Re: La nueva apariencia de EasyReport

Post 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 .
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: La nueva apariencia de EasyReport

Post by Antonio Linares »

Manuel,

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

Antonio Linares
www.fivetechsoft.com
Post Reply