Les explico que necesito hacer
tengo un xbrowse, necesito que sea capaz de mostrar informacion de varias tablas dependienddo lo que el usuario necesite.
ya probe varias maneras, la unica que me muestra los datos como quiero es mostrando un array, de otra manera si lo hago sin eso
tengo que cada vez que hago un nuevo DEFINE QUERY volver a declarar el setdolphin(....), asi y todo mostrando el array tengo el mismo problema
cuando hago el setarray(...) las columnas del xbrowse pierden todo el nWidth, deja de expandir la ultima columna...
no entiendo que es lo que hago mal, la ultima modificacion (que pense que podía funcionar) me hace lo mismo.
aca dejo el codigo donde esta el problema.
gracias.
Code: Select all
METHOD pantalla()
LOCAL oDlg
LOCAL oGets := Array(3),;
vGets := Array(3),;
oBtns := Array(4),;
oQry,;
oBrw,;
oFont,;
oFont1,;
adatos
DEFINE FONT oFont NAME "" bold SIZE 0, -11
DEFINE FONT oFont1 NAME "Ebrima" SIZE 0, -11
vGets[1]:= Date()
vGets[2]:= 4
DEFINE DIALOG oDlg resource "CAJA"
REDEFINE DTPICKER oGets[1] VAR vGets[1] ID 100 OF oDlg
REDEFINE radio oGets[2] VAR vGets[2] ID 101, 102, 103, 104 OF oDlg
//----------( botones )----------
REDEFINE BUTTON oBtns[1] ID 200 OF oDlg
REDEFINE BUTTON oBtns[2] ID 201 OF oDlg
//----------( browser )----------
oBrw:= TXBROWSE():new(oDlg)
aDatos:= ::cargarBrowser(@oBrw, vGets)
WITH OBJECT oBrw
:setarray(aDatos)
:bClrStd := { || If( oBrw:KeyNo() % 2 == 0, ;
{ CLR_BLACK, RGB( 255, 255, 255 ) }, ;
{ CLR_BLACK, RGB( 214, 255, 215 ) } ) }
:bClrSel:={ || { CLR_BLACK, CLR_WHITE} }
:nMarqueeStyle := 5
:lKinetic := .F.
:ltransparent := .F.
:nRowHeight := 18
:lHScroll := .T.
:nheaderHeight := 20
:lRecordSelector := .F.
:lAllowColSwapping := .F.
:lColDividerComplete := .f.
:nRowDividerStyle := 4
:nStretchCol := STRETCHCOL_LAST
:nColDividerStyle := 4
:L2007 := .T.
END WITH
oBrw:createfromresource(205)
//----------( )----------
oBtns[1]:bAction:= {|| ::cargarBrowser( oBrw, vGets )}
oBtns[2]:bAction:= {|| ::cargarProductos( oBrw, vGets )}
ACTIVATE DIALOG oDlg CENTERED
RETURN (NIL)
//------------------------------------------------------------------------------
METHOD valorRetorno( nKey )
RETURN ( NIL )
//------------------------------------------------------------------------------
METHOD cargarBrowser( oBrw, vGets)
LOCAL oQry
LOCAL cSql
LOCAL aDatos
DO CASE
CASE vGets[2] = 1
CASE vGets[2] = 2
CASE vGets[2] = 3
CASE vGets[2] = 4
cSql:= "select " + ;
"tbctacte.fecha as c1, " + ;
"tbclientes.nombre as c2, " + ;
"tbctacte.importe as c3 " + ;
"from tbctacte " + ;
"left join tbclientes " + ;
"on tbclientes.id = tbctacte.idcliente " + ;
"where tbctacte.fecha = " + ClipValue2SQL(vGets[1]) + ;
" order by tbctacte.fecha"
END CASE
DEFINE query oQry cSql
IF oQry:nRecCount()== 0
aDatos:= {{"" ,"","",""}}
ELSE
aDatos:= oQry:fillarray()
ENDIF
oBrw:setarray(aDatos)
DO CASE
CASE vGets[2] = 4
WITH OBJECT obrw
WITH object :aCols[1]
:cHeader := "Fecha"
:nWidth := 100
:nHeadStrAlign := AL_CENTER
END with
WITH object :aCols[2]
:cHeader := "Productos"
:nHeadStrAlign := AL_CENTER
:nWidth := 250
END with
WITH object :aCols[3]
:cHeader := "Cantidad"
:nWidth := 120
:nHeadStrAlign := AL_CENTER
END with
END with
END CASE
oBrw:refresh()
RETURN (aDatos)