Page 1 of 1

Ayuda con XBROWSE

Posted: Thu Sep 12, 2019 3:25 pm
by jvtecheto
Hola :

Practicamente he migrado mi vieja aplicacion a la nueva version de Fivewin con exito pero me gustaria cambiar los
antiguos LISTBOX por XBROWSE.

Tengo este codigo que funciona perfecto.

Code: Select all

 @ 2, 0 LISTBOX Empw ;
   FIELDS aDbfBmps[ IF( Emp->Cerrada, 4, 3 ) ], aDbfBmps[ IF( Emp->Activo, 1, 2 ) ], Emp->codigo, Emp->Nombre, Emp->Ano ;
   Alias cAlias HEADERS "E", "A", "CODIGO", "NOMBRE", "AÑO TRABAJO" VALID ( SaveIniCol( Empw, cAlias ), .T. ) ;
   ON DBLCLICK EditEmpres( Empw, .F. ) WHEN ( IF( Select( cAlias ) > 0, Emp->( LastRec() ) > 0, .F. ) ) UPDATE OF oWndEmp
 
Como seria utilizando XBROWSE

Gracias por vuestra ayuda.

Jose.

Re: Ayuda con XBROWSE

Posted: Sun Sep 15, 2019 5:46 pm
by FranciscoA
Por si aun no lo has hecho, aqui tienes un ejemplo.

Code: Select all

Function Lbx2Brw()
local Empw, cAlias, Emp, oWndEmp

if !File(".\Emp.dbf")
dbCreate(".\Emp",{ { "Cerrada", "L",  1,0 } ,;
                   { "Activo" , "L",  1,0 } ,; 
                   { "Codigo" , "C",  2,0 } ,; 
                   { "nombre" , "C", 35,0 } ,;
                   { "Ano"    , "N",  4,0 } } )
DBUsearea(.t.,,"Emp","Emp",.t.)
dbappend()
   field->cerrada := .f. ; field->activo := .t. ; field->codigo := "01" 
   field->nombre := "EMPRESA NUMERO UNO" ; field->ano := 2019
dbappend()
   field->cerrada := .f. ; field->activo := .t. ; field->codigo := "02"
   field->nombre := "EMPRESA NUMERO DOS" ; field->ano := 2019
dbappend()
   field->cerrada := .T. ; field->activo := .F. ; field->codigo := "03"
   field->nombre := "EMPRESA NUMERO TRES" ; field->ano := 2018
Emp->(dbcloseArea())
endif

DBUsearea(.t.,,"Emp","Emp",.t.)
cAlias:=Alias()

   DEFINE DIALOG oWndEmp SIZE 600,400 PIXEL TITLE "FiveWin Version 1204"

   @ 2, 0 XBROWSE Empw OF oWndEmp PIXEL ;
          SIZE 280,140 ;
          DATASOURCE cAlias ;
          COLUMNS "Cerrada", "Activo", "Codigo", "Nombre", "Ano" ;
          HEADERS "E", "A", "CODIGO", "NOMBRE", "AÑO TRABAJO" ;
          FOOTERS CELL LINES ;
          ON DBLCLICK EditEmpres( Empw, .F. ) ;
          WHEN ( IF( Select( cAlias ) > 0, Emp->( LastRec() ) > 0, .F. ) ) ;
          VALID ( SaveIniCol( Empw, cAlias ), .T. ) ;
          UPDATE 

   WITH OBJECT Empw 
      :nColDividerStyle := LINESTYLE_LIGHTGRAY
      :nRowDividerStyle := LINESTYLE_LIGHTGRAY

      :aCols[ 1 ]:addResource("aceptar")
      :aCols[ 1 ]:addResource("cancelar")
      :aCols[ 1 ]:bBmpData := {|| IF( Emp->Cerrada, 2,1 ) }

      :aCols[ 2 ]:addResource("checked")
      :aCols[ 2 ]:addResource("unchecked")
      :aCols[ 2 ]:bBmpData := {|| IF( Emp->Activo , 1,2 ) }
   END

   Empw:CreateFromCode()

   ACTIVATE DIALOG oWndEmp CENTERED   ON INIT Empw:Move(40,20)

   (cAlias)->(DbCloseArea())
   Ferase(".\Emp.dbf")

RETURN NIL

Function EditEmpres( oBrw, lLogico ) 
Return MsgInfo("EditEmpres()"+CRLF+;
               oBrw:codigo:Value +"   "+ oBrw:nombre:value )

Function SaveIniCol( oBrw, cAlias )
Return .t.
 
Saludos

Re: Ayuda con XBROWSE

Posted: Wed Sep 18, 2019 4:21 pm
by jvtecheto
Hola FranciscoA.

En primer lugar muchas gracias por tu interes.

Me funciona bien pero no consigo que me muestre los bitmaps como antiguamente con este codigo.

Code: Select all

FIELDS aDbfBmps[ IF( Emp->Cerrada, 4, 3 ) ], aDbfBmps[ IF( Emp->Activo, 1, 2 ) ]
 
Yo tengo en el arreglo aDbfBmps cargados los bitmaps que tengo que usar y segun sea aDbfBmps[3] ó aDbfBmps[4] me muestra uno u otro.

Pruebo con esto y no lo muestra

Code: Select all

:aCols[ 1 ]:bBmpData := {|| aDbfBmps[ IF( Emp->Cerrada, 4, 3 ) ] }
 
mira la pantalla.

Image

Tambien me gustaria que la linea apareciera toda resaltada y no solo un campo.

Saludos amigo.

Jose.

Re: Ayuda con XBROWSE

Posted: Wed Sep 18, 2019 9:00 pm
by FranciscoA
jvtecheto wrote: Yo tengo en el arreglo aDbfBmps cargados los bitmaps que tengo que usar y segun sea aDbfBmps[3] ó aDbfBmps[4] me muestra uno u otro.
Pruebo con esto y no lo muestra

Code: Select all

:aCols[ 1 ]:bBmpData := {|| aDbfBmps[ IF( Emp->Cerrada, 4, 3 ) ] }
 
Jose.
Jose:
La unica forma que conozco es agregando los recursos en cada col en que los vas a utilizar.
Prueba lo siguiente (siempre agregando los recursos a las cols):

Code: Select all

local aDbfBmps:={"aceptar","cancelar","checked","unchecked"}
...
...
      :aCols[1]:AddResource( aDbfBmps )
      :aCols[1]:bBmpData := {|| IF( Emp->Cerrada, 2, 1 ) }

      :aCols[2]:AddResource( aDbfBmps )
      :aCols[2]:bBmpData := {|| IF( Emp->Activo, 3, 4 ) }
 
Si existe forma similar o igual a la que expones, traslademos la consulta a los maestros de FiveWin.

Saludos.

Re: Ayuda con XBROWSE

Posted: Wed Sep 18, 2019 9:03 pm
by FranciscoA
jvtecheto wrote: Tambien me gustaria que la linea apareciera toda resaltada y no solo un campo.
Jose.
Si te refieres a sobre-iluminar la fila prueba con esto

Code: Select all

   :nMarqueeStyle    := MARQSTYLE_HIGHLROW   //ilumina toda la linea
 
Si te refieres a resaltar los datos (fuente), intenta asi:

Code: Select all

   AEval(oBrw:aCols,{|o| o:DataFont := if(Emp->Activo, oFont2, oFont1 ) } )
 
Saludos

Re: Ayuda con XBROWSE

Posted: Wed Sep 18, 2019 9:09 pm
by cnavarro
Intenta definiendo el tipo de columna

Code: Select all

:aCols[ 1 ]:cDataType := 'F'
 

Re: Ayuda con XBROWSE

Posted: Thu Sep 19, 2019 5:46 pm
by jvtecheto
Hola:

Gracias a los 2, por ahora me funciona me quedan unos flecos que resolver pero prefiero estudiar un poco mas la clase.
Creia que el cambio era mas automatica pero al ser una clase con muchas mas opciones es mas complicado.

dentro de unos dias posteo de nuevo.

Muchisimas gracias.

Jose.