Page 1 of 1

xBrowse() en una sola linea

PostPosted: Wed Aug 07, 2013 12:11 am
by Enrrique Vertiz
Saludos, soy nuevo en el uso del xBrowse y estoy tratando de usarlo en una sola línea, al estilo antiguo, tipo DBedit(), se puede ??
Por ejemplo tengo un arreglo y su titulo, hasta aquí me funciona Ok :

xBrowse ( aUsers, "Empresas a las que tiene acceso" )

Ahora aUsers{} tiene 2 columnas, como puedo hacer para asignarles un nombre/titulo a la columna ??, lo hice asi : (pero me bota error) :

xBrowse ( aUsers, "Empresas a las que tiene acceso", {"Codigo", "Nombre"} )

Que mas características puedo asignar en una sola línea, título, ancho, color, Etc.

Busque en xBrowse.ch pero no me quedo claro ....., gracias por su atención ...

Re: xBrowse() en una sola linea

PostPosted: Wed Aug 07, 2013 2:28 am
by FranciscoA
Enrique,
La function XBrowse, segun mi version, esta limitada a:
function XBrowse( uData, cTitle, lAutoSort, bSetUp, aCols, bSelect, lExcel, lFastEdit )

Sin embargo, puedes hacer algo como esto:
Code: Select all  Expand view
Function MyXBrowse( uData, cTitle, aTitCols, lAutoSort, bSetUp, aCols, bSelect, lExcel, lFastEdit )

   DEFAULT  uData    := Alias(), ;
            cTitle   := If( ValType( uData ) == 'C', uData, ;
                        If( ValType( uData ) == 'O', uData:ClassName(), ;
                        'XBROWSE' ) ), ;
            lAutoSort:= .f., ;
            bSetUp   := { || nil },;
            lExcel   := .t. ,;
            aTitCols:={}       //AQUI
 


Y despues de estas lineas:
if lAutoSort
@ nHt - 28, 10 say 'Search For :' size 30,10 pixel of oDlg
@ nHt - 28, 45 say oBrw:oSeek prompt oBrw:cSeek ;
size nWd-115,10 pixel update of oDlg ;
color CLR_RED,CLR_YELLOW
ATail( oDlg:aControls ):Cargo := 115
@ nHt - 28,nWd - 60 checkbox oBrw:lSeekWild prompt 'WildSeek' ;
size 50, 10 pixel of oDlg ;
on change ( oBrw:Seek(), oBrw:SetFocus() )
ATail( oDlg:aControls ):Cargo := -60
endif

Code: Select all  Expand view
 if !empty(aTitCols)
     AEval( oBrw:aCols, { |o,n| o:cHeader := aTitCols[n], o:nHeadStrAlign := AL_CENTER } )
  endif
 


Entonces ya podrias hacer:
Code: Select all  Expand view
xBrowse ( aUsers, "Empresas a las que tiene acceso", {"Codigo", "Nombre"} )
 


Espero te sirva.
Saludos.

Re: xBrowse() en una sola linea

PostPosted: Wed Aug 07, 2013 2:32 am
by FranciscoA
Ahora bien, recuerda que existe el comando XBROWSE que es muy poderoso y facil de usar:
@1,1 XBROWSE oBrw OF oDlg ARRAY HEADERS SIZE LINES AUTOSORT FASTEDIT etc.
Saludos.

Re: xBrowse() en una sola linea

PostPosted: Wed Aug 07, 2013 2:46 am
by Enrrique Vertiz
Francisco, GRACIAS, creo que me voy a probar por comando como sugieres ...

Re: xBrowse() en una sola linea

PostPosted: Wed Aug 07, 2013 4:25 am
by FranciscoA
Aqui tienes un ejemplo:
Code: Select all  Expand view
dbUseArea(.t.,,cPath+"\Usuarios","Usuarios",.t.)
cAlias:=Alias()

DEFINE DIALOG oDlg RESOURCE "USUARCTRL" TITLE "USUARIOS" ;
       FONT oFont TRANSPARENT

REDEFINE XBROWSE oBrw ID 118 OF oDlg ;
         ALIAS cAlias ;
         COLUMNS "Nombre","Administ" ;
         HEADERS "Nombre de usuario","Tipo de acceso" ;
         FOOTERS LINES CELL

   AEval( oBrw:aCols, { |o| o:nEditType := 0 ,;   //No editables
                            o:nHeadStrAlign := 2 } )  //texto encab/col centrado

   WITH OBJECT oBrw
      :nMarqueeStyle    := MARQSTYLE_HIGHLROW  //_HIGHLROWMS
      :nColDividerStyle:=LINESTYLE_LIGHTGRAY
      :nRowDividerStyle:=LINESTYLE_LIGHTGRAY
   END
 

Saludos.