Page 1 of 1

USO DE Setup en xBrowse - CERRADO

PostPosted: Sun Sep 07, 2014 4:19 pm
by joseluisysturiz
Saludos, estoy intentando usar SETUP en mis xbrowse, ya que repito muchos parametros en su creacion, entiendo que con SETUP llamando una funcion donde haga mis definicion me ahorraira lineas repetias innecesarias, tambien entiendo que mi funcion deberia recibir mi objeto xbrowse y algunos otros parametros, pero no consigo si es asi como se le llama, el methodo SETUP en xbrowse, vi como un colega lo usa asi...

Code: Select all  Expand view
XBROWSER aPrueba tITLE "MI TITULO" COLUMNS { 1,2,3 } SETUP MiSetUp( oBrw, {'Col1','Col2',Col3'} )


pero yo defino mi xbrowse asi...

Code: Select all  Expand view
  oBrw := TXBrowse():New( oDlg )

   WITH OBJECT oBrw
      :nMarqueeStyle    := MARQSTYLE_HIGHLCELL
      :nColDividerStyle := LINESTYLE_BLACK
      :lColDividerComplete := .t.
      :nHeaderHeight := 20
      :l2007 := .t.
      :lFooter := .t.
      :lRecordSelector := .t.
      :lAllowColHiding := .f.
      :lAllowColSwapping := .f.
      :bClrStd := {|| IF( oBrw:nArrayAt % 2 == 0, {0, RGB(255,255,255)} ,;
         {0, RGB(203,226,254)} ) }
// AL HACER CLICK EN LA CELDA QUEDA EDITABLE
      :bLButtonUp := { |r,c,f,o| If( o:SelectedCol():lEditable, o:SelectedCol():Edit(), nil )  }
      :lFastEdit := .t.
   END WITH

   oCol := oBrw:AddCol()
      oCol:cHeader       := "Denominación"
      oCol:bStrData      := {|| IIF( LEN( oBrw:aArrayData ) == 0, SPACE(5) ,;
                                 oBrw:aArrayData[oBrw:nArrayAt, 1] ) }
      oCol:nHeadStrAlign := AL_CENTER
      oCol:nDataStrAlign := AL_CENTER
      oCol:nWidth        := 100
      oCol:nArrayCol     := 1

   oBrw:CreateFromResource(100)
   oBrw:SetArray( aBilletes, .t. )
 


...como y donde aplico el uso de SETUP.?, gracias, saludos... :shock:

Re: USO DE Setup en xBrowse

PostPosted: Sun Sep 07, 2014 7:07 pm
by FranciscoA
Hola Jose Luis, intenta asi: (Ejemplo al vuelo, no lo probé)
Code: Select all  Expand view
oBrw := TXBrowse():New( oChild )

  oBrw:bSetUp := {|| MyBrwSetUp(oBrw) }

   oCol = oBrw:AddCol()
   *****
   *****
function MyBrwSetUp(oBrw)
   oBrw:nMarqueeStyle    := MARQSTYLE_HIGHLCELL  //BarSel solo ilumina la celda actual
   oBrw:nColDividerStyle     := LINESTYLE_INSET
   oBrw:nRowDividerStyle     := LINESTYLE_INSET
   oBrw:lColDividerComplete  := .t.    //completa pintado hasta el footer cuando lineas no llenan todo el browse
   oBrw:nRowHeight   := 20  //altura entre lineas
RETURN NIL
 

Re: USO DE Setup en xBrowse-CERRADO

PostPosted: Sun Sep 07, 2014 8:01 pm
by joseluisysturiz
Francisco, muchisimas gracias, funciono al pelo...a eso me referia, como no veo informacion sobre setup, ni tenia idea que era un bloque de codigo, ahora si a limpiar mis sistemas de tantas lineas repetidas, saludos... :shock:

Una acotacion, tuve que colocar el
oBrw:bSetUp := {|| mis_browses( oBrw ) } // LAS DEFINICIONES GENERALES EN MIS BROWSES

despues de las definiciones de las columnas ya que si lo hago antes, me agrega al xbrowse primera columna a la izquierda con data .f. y .t. con cabezera bSetup, al cambiar la linea de posicion, desaparecio la columna...se que se puede definir las columnas y otros valores generales, pero n consigo informacion sobre cual es el orden y tipos de datos a enviar, solo el array de las columnas, si alguien tiene o sabe los parametros que se pueden mandar a mi funcion usando bSetup y quiera compartirla, gracias, saludos... :shock:

PostData: volviendo a revisar el xbrowse...me doy cuenta que ahora coloco la columna con valores .f. y .t. al final, es decir, si se coloca antes de la defincion de las columnas, crea de primero dicha columna y se coloca despues de las columnas, agrega dicha columna al final, no entiendo porque hace eso o si es obligatorio definir las columnas en la funcion que llamo con bSetup...algun comentario o idea..? saludos.. :shock:

Re: USO DE Setup en xBrowse

PostPosted: Sun Sep 07, 2014 11:26 pm
by FranciscoA
Efectivamente, asi se comporta, lo acabo de probar.
La idea del bSetup se me vino a la mente porque mucho uso la function Xbrowse que está a samples. Hechale un vistazo, tal vez sacas algo.
function XBrowse( uData, cTitle, lAutoSort, bSetUp, aCols, bSelect, lExcel, lFastEdit )


Por otra parte, lo que quieres hacer, lo he hecho de esta otra forma: (puede que te sirva de guia)

Code: Select all  Expand view
@1,1 XBROWSE oBrw1 OF oDlg AUTOCOLS FOOTERS ARRAY aData[1]
     BrwCmpSetUp(oBrw1,nHt,nWd,oFont)
     oBrw1:CreateFromCode()
@1,1 XBROWSE oBrw2 OF oDlg AUTOCOLS FOOTERS ARRAY aData[2]
     BrwCmpSetUp(oBrw2,nHt,nWd,oFont)
     oBrw2:CreateFromCode()
@1,1 XBROWSE oBrw3 OF oDlg AUTOCOLS FOOTERS ARRAY aData[2]  //aData[3]
     BrwCmpSetUp(oBrw3,nHt,nWd,oFont)
     oBrw3:CreateFromCode()
...
...
//-------------------------
Function BrwCmpSetUp(oBrw,nHt,nWd,oFont)
local n
local aGradBarSel:= { { 1, RGB(252,232,171), RGB(248,195, 34) } }
local aGradRowSel:= { { 1, RGB(108,125,184), RGB(241,222,088) } }

   WITH OBJECT oBrw
      :nTop                   := 40  
      :nLeft                  := 5
      :nBottom                := :nTop + nHt - 30
      :nRight                 := :nLeft + nWd - 20
      :nMarqueeStyle          := MARQSTYLE_HIGHLCELL  //MARQSTYLE_HIGHLROWMS //Multiselect  //MARQSTYLE_HIGHLROW   //MARQSTYLE_HIGHLCELL
      :lColDividerComplete    := .t.
      :nStyle                 := nAnd( :nStyle, nNot( WS_BORDER ) )
      :nColDividerStyle := LINESTYLE_LIGHTGRAY
      :nRowDividerStyle := LINESTYLE_LIGHTGRAY
      :nHeaderHeight    := 30  //altura del header
      :bClrSel        := {|| { nRGB(  0,  0,  0), aGradRowSel } }  // para barra de linea selecc cuando el control no tiene el foco
      :bClrSelFocus   := { || { CLR_BLACK, aGradBarSel } }     // para barra de linea selecc cuando el control tiene el foco
      *:nHeadStrAligns := AL_CENTER  //texto cabeceras de cols centrado
      *:bClrStd        := { || IF( (cAlias)->Conciliado = "CONCILIADO", {0, RGB(222, 225, 230)} ,{CLR_BLACK, CLR_WHITE} ) }
      :lRecordSelector  := .f.
      :nStretchCol   :=  STRETCHCOL_LAST  //ajustar ancho de col6 para llenar ancho del browse

      :SetFont(oFont)

      For n:=1 to len(:aCols)   //para que cols de ctas tengan mismo tamaño
        :aCols[n]:nWidth := 28
      Next

     :aCols[6]:nWidth := 200
     :aCols[7]:nWidth := 80
     :aCols[8]:nWidth := 80

     :aCols[7]:lTotal := .t.
     :aCols[7]:nTotal := 0
     :aCols[7]:cEditPicture := "999,999,999.99"
     :aCols[7]:nFooterType := AGGR_SUM   //AGGR_TOTAL

     :aCols[8]:lTotal := .t.
     :aCols[8]:nTotal := 0
     :aCols[8]:cEditPicture := "999,999,999.99"
     :aCols[8]:nFooterType := AGGR_SUM   //AGGR_TOTAL

     :MakeTotals()
   END
Return nil
 

Saludos

Re: USO DE Setup en xBrowse

PostPosted: Sun Sep 07, 2014 11:50 pm
by joseluisysturiz
Gracias Francisco por confirmar lo que dije, crei habia hecho algo malo, ya que tengo un xbrowse editable con varias lineas precargadas de una array y cuando llego a la ultima columna en edicion, en vez de salta a la siguiente fila, de forma extraña hace salto a la ultima fila como si existiera oculto un GoBottom, el detalle esta que me lo copie de otra funcion donde si trabaja bien, es mas, es para el mismo trato con la unica diferencia que en el que me hace el salto extraño uso maketotal, la 1ra.columna no es editable, la 2da.si y la tercera no, y la 3ra. su valor es igual al valor fijo de la 1ra.multiplicado por el valor entrado en la 2da...tengo rato revisando y no le veo el motivo de ese salto loco a la ultima linea, este en la linea que este...seguire revisando, gracias...tu idea es buena, es hacer nuestro propio SETUP saludos... :shock:

Re: USO DE Setup en xBrowse

PostPosted: Mon Sep 08, 2014 12:12 am
by FranciscoA
Probá asi, como simple function:
Code: Select all  Expand view
oBrw := TXBrowse():New( oChild )

MyBrwSetUp(oBrw)    //ASI...

   oCol = oBrw:AddCol()
   *****
   *****
function MyBrwSetUp(oBrw)
   oBrw:nMarqueeStyle    := MARQSTYLE_HIGHLCELL  //BarSel solo ilumina la celda actual
   oBrw:nColDividerStyle     := LINESTYLE_INSET
   oBrw:nRowDividerStyle     := LINESTYLE_INSET
   oBrw:lColDividerComplete  := .t.    //completa pintado hasta el footer cuando lineas no llenan todo el browse
   oBrw:nRowHeight   := 20  //altura entre lineas
RETURN NIL

Re: USO DE Setup en xBrowse

PostPosted: Mon Sep 08, 2014 5:07 am
by joseluisysturiz
FranciscoA wrote:Probá asi, como simple function:
Code: Select all  Expand view
oBrw := TXBrowse():New( oChild )

MyBrwSetUp(oBrw)    //ASI...

   oCol = oBrw:AddCol()
   *****
   *****
function MyBrwSetUp(oBrw)
   oBrw:nMarqueeStyle    := MARQSTYLE_HIGHLCELL  //BarSel solo ilumina la celda actual
   oBrw:nColDividerStyle     := LINESTYLE_INSET
   oBrw:nRowDividerStyle     := LINESTYLE_INSET
   oBrw:lColDividerComplete  := .t.    //completa pintado hasta el footer cuando lineas no llenan todo el browse
   oBrw:nRowHeight   := 20  //altura entre lineas
RETURN NIL


Asi lo hice Francisco, el detalle que reviso ahora es el comportamiento extraño del salto al final del xbrowse sin mandarlo, gracias, saludos... :shock:

Re: USO DE Setup en xBrowse - CERRADO

PostPosted: Wed Sep 10, 2014 2:39 am
by joseluisysturiz
Doy por cerrado el tema, tenia una confucion en lo de SETUP, esto es de uso de la FUNCION xBrowse que no conocia, muy buena por demas, alli vi como se usaba con la ayuda del colega Alfredo Cruz, asi que, estoy empezando a usar funcion xBrowse en pequeños programas, gracias Francisco por las respuestas y las ideas, saludos... :shock: