Page 1 of 1

¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 4:17 am
by lagm
Hola,

Ya estoy utilizando la versión FWH20.04, donde me encuentro con bastantes cambios respecto a versiones anteriores.
Estoy migrando una aplicación xHarbour modo consola, que maneja tablas dbf /cdx.

En estos días he cambiado la forma de trabajar las tablas dbf: como objetos.
Los registros los paso a arrays mediante FW_DbfToArray()
Los arreglos los trabajo con xBrowse.

Todo bien hasta este punto.

Lo que no he podido lograr (no encuentro un ejemplo claro), y esa es la ayuda que pido para poder seguir avanzando, es manejar una tabla de detalle, en donde
necesito contar con columnas de: código, descripción, precio, cantidad y total.

Entiendo que ya muchos programadores no usan dbf's pero debe quedar algún ejemplo actualizado para manejar tablas de detalle,
Agradezco su ayuda,

Luis Antonio
Curicó - Chile

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 4:42 am
by Antonio Linares
Luis Antonio,

Revisa el ejemplo samples\fivedbu.prg que te dará una visión amplia de como trabajar con tablas, browses, etc

Desde c:\fwh\samples haz:

buildh.bat fivedbu

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 11:46 am
by leandro
Una idea

Code: Select all

    oBrwDoin := TXBrowse():New( oDlgDin )
    oBrwDoin:nMarqueeStyle         := MARQSTYLE_HIGHLROW
    oBrwDoin:nRowDividerStyle      := LINESTYLE_LIGHTGRAY
    oBrwDoin:nColDividerStyle      := LINESTYLE_LIGHTGRAY
    oBrwDoin:nHeaderLines          := 1
    oBrwDoin:lColDividerComplete   := .t.
    oBrwDoin:lRecordSelector       := .t.
    oBrwDoin:nStretchCol           := STRETCHCOL_LAST
    oBrwDoin:l2007                 := .f.
    oBrwDoin:oFont                 := oFont1  

    oCol          = oBrwDoin:AddCol()
    oCol:bStrData := {|| if(Len( detalle ) > 0 , Transform(detalle[oBrwDoin:nArrayAt]["id"],oLamcla:PIC9) ,"" ) }
    oCol:AddResource( "#8208" ) 
    oCol:cHeader  = "Item"
    oCol:nWidth   = 30
    oCol:nHeadStrAlign = AL_LEFT
    oCol:nDataStrAlign = AL_LEFT    
    oCol:oHeaderFont = oFont

    oCol          = oBrwDoin:AddCol()
    oCol:bStrData := {|| if(Len( detalle ) > 0 , detalle[oBrwDoin:nArrayAt]["idproducto"] ,"" ) }
    oCol:cHeader  = "Codigo"
    oCol:nWidth   = 85
    oCol:nHeadStrAlign = AL_LEFT
    oCol:nDataStrAlign = AL_LEFT    
    oCol:oHeaderFont = oFont
    
    oCol          = oBrwDoin:AddCol()
    oCol:bStrData := {|| if(Len( detalle ) > 0 , detalle[oBrwDoin:nArrayAt]["nombreproducto"] ,"" ) }
    oCol:cHeader  = "Descripción"
    oCol:nWidth   = 180
    oCol:nHeadStrAlign = AL_LEFT
    oCol:nDataStrAlign = AL_LEFT    
    oCol:oHeaderFont = oFont
    oCol:cFooter      = "TOTALES"   
    oCol:oFooterFont = oFont3

   
    oBrwDoin:SetArray( detalle )
    oBrwDoin:CreateFromResource( 102 )  
 

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 2:26 pm
by lagm
Gracias Antonio y Leandro,

Muy buenos ejemplos para seguir investigando hasta crear el módulo de mantenimiento encabezado detalle

Luis antonio

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 3:53 pm
by FranciscoA
Hola.
Mira, en \samples, Yunus.prg, especificamente function EditInvoice( oRec ).
Saludos.

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 5:19 pm
by wilsongamboa
buenos dias
aprovechando
como hago para si en la fila del browse tengo una fecha esta no sea editable en funcion de otro campo que tiene un valor digamos
campo = 'CD' ->edite la fecha de esa fila
campo = 'EF' ->no edite la fecha de esa fila
he probado con
oCol1:nEditType =0 para no editar o igual a otro valor para editar
PERO me deja editar o me bloquea TODA la columna
como o que uso para solo bloquear esa celda en esa fila
espero haberme explicado
muchas gracias por su ayuda
saludos

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 6:58 pm
by FranciscoA
Wilson, aquí tienes un ejemplo probado en 1709.

Code: Select all

//----------------------------------------------------------//
// CELDA EDITABLE O NO  ( FAPSOFTWARE )
//---------------------------------------------------------//
Function CeldaDisable()
local oDlg, oBrw, n
LOCAL aAgenda := { {1,5,8,4,5,6,7} ,;
                   {1,4,9,4,5,6,7} ,;
                   {1,2,3,4,5,6,7} ,;
                   {1,5,0,4,5,6,7} ,;
                   {1,2,3,4,5,6,7} }

  DEFINE DIALOG oDlg  SIZE 450,200 PIXEL
  @5, 10 SAY "Celdas en Columna 3 son editables si valor en Columna 2 == 2" SIZE 200,10 PIXEL OF oDlg

  @ 20, 10 XBROWSE oBrw SIZE -10,-10 PIXEL OF oDlg  DATASOURCE aAgenda ;
           COLUMNS 1,2,3,4,5,6,7  HEADERS "LU","MA","MI","JU","VI","SA","DO";
           CELL LINES 

  WITH OBJECT oBrw:aCols[3]
     :nEditType := 1 
     :bEditWhen := {|| oBrw:aCols[2]:Value == 2 }  //Celda en col 3 es editable si valor celda en col 2 = 2
  END

  oBrw:CreateFromCode()

  AEVAL( oBrw:aCols,{|o| o:nWidth := 50 } )

  ACTIVATE DIALOG oDlg CENTERED
Return nil
 
Saludos.

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 7:32 pm
by lagm
FranciscoA wrote:Hola.
Mira, en \samples, Yunus.prg, especificamente function EditInvoice( oRec ).
Saludos.
Eso es precisamente lo que necesito.
Es fundamental contar con ejemplos así de claros para quienes estamos iniciando o retomando la programación con FiveWin,
y personas que amablemente comparten sus conocimientos y experiencias.

Muchas gracias Francisco,

Luis Antonio
Curicó-Chile

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 9:00 pm
by wilsongamboa
Francisco que barbaro!! justo lo que necesito
muchas gracias !!

Re: ¿Algún ejemplo del uso de xBrowse?

Posted: Tue May 19, 2020 9:30 pm
by FranciscoA
Me alegra mucho que hayan resuelto.
Saludos.