FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour USO DE Setup en xBrowse - CERRADO
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
USO DE Setup en xBrowse - CERRADO
Posted: Sun Sep 07, 2014 04:19 PM
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 (fw): Select all Collapse
 XBROWSER aPrueba tITLE "MI TITULO" COLUMNS { 1,2,3 } SETUP MiSetUp( oBrw, {'Col1','Col2',Col3'} )


pero yo defino mi xbrowse asi...

Code (fw): Select all Collapse
   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... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: USO DE Setup en xBrowse
Posted: Sun Sep 07, 2014 07:07 PM
Hola Jose Luis, intenta asi: (Ejemplo al vuelo, no lo probé)
Code (fw): Select all Collapse
 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
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: USO DE Setup en xBrowse-CERRADO
Posted: Sun Sep 07, 2014 08:01 PM

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:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: USO DE Setup en xBrowse
Posted: Sun Sep 07, 2014 11:26 PM
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 (fw): Select all Collapse
@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
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: USO DE Setup en xBrowse
Posted: Sun Sep 07, 2014 11:50 PM

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:

Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM
Re: USO DE Setup en xBrowse
Posted: Mon Sep 08, 2014 12:12 AM
Probá asi, como simple function:
Code (fw): Select all Collapse
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
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: USO DE Setup en xBrowse
Posted: Mon Sep 08, 2014 05:07 AM
FranciscoA wrote:Probá asi, como simple function:
Code (fw): Select all Collapse
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... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM
Re: USO DE Setup en xBrowse - CERRADO
Posted: Wed Sep 10, 2014 02:39 AM

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:

Dios no está muerto...



Gracias a mi Dios ante todo!

Continue the discussion