Estoy intentando cambiar por completo el oTree que tengo montado sobre el xbrowse, intento usar la función oBrw:settree() pero lo que hace es sobre poner las columnas que se están mostrando.
Si se hace varias veces clic sobre el botón de cambio, se aumentan mas y mas columnas.
- Code: Select all Expand view
#include "fivewin.ch"
function Main()
local oTree, oFont2, oBtCmb
local oDlg, oFont, oBrw
Local cbCambioEstado := <|x|
oBrw:oTreeItem:Cargo[2] := x
oBrw:refresh()
>
Local cbCambioTree := <||
oTree := buildtree2()
oBrw:SetTree(oTree)
oBrw:refresh()
oTree:OpenAll()
>
oTree := buildtree1()
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-15
DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0,-9
DEFINE DIALOG oDlg SIZE 700,500 PIXEL TRUEPIXEL FONT oFont
@ 0, 20 BUTTONBMP oBtCmb OF oDlg PIXEL size 80, 21 PROMPT "Cambiar oTree" FONT oFont2 ACTION EVAL(cbCambioTree)
@ 20,20 XBROWSE oBrw SIZE -20,-20 PIXEL OF oDlg ;
DATASOURCE oTree ;
COLUMNS 2 ;
HEADERS "ITEM", "AUTO";
CELL LINES NOBORDER
WITH OBJECT oBrw
:lDisplayZeros := .f.
:aCols[ 1 ]:AddBitmap( { FWDArrow(), FWRArrow(), GetTreeBmps()[ 2 ] } )
:aCols[2]:bEditValue := {|| oBrw:oTreeItem:Cargo[2] }
:aCols[2]:cDataType := "L"
:aCols[2]:nEditType := EDIT_GET
:aCols[2]:SetCheck()
:aCols[2]:bOnPostEdit := { | o, x, n | EVAL(cbCambioEstado,x) }
:bClrStd := { || { CLR_BLACK, If( oBrw:oTreeItem:nLevel == 1, CLR_YELLOW, CLR_WHITE ) } }
:CreateFromCode()
END
oTree:OpenAll()
ACTIVATE DIALOG oDlg CENTERED
RELEASE FONT oFont
return nil
//CONSTRUIMOS EL PRIMER TREE
function buildtree1()
Local oTree
Local aData := {}
Local aData2 := {}
Local t,r
aData := ;
{ { "Facturas", 00,.T. } ;
, { "Pedidos", 00,.F. } ;
, { "Remsiones", 00,.F. } ;
, { "Notas", 00,.F. } ;
}
aData2 := ;
{ { "Agregar ", 01,.T. } ;
, { "Modificar ", 02,.T. } ;
}
TREE oTree
FOR r:=1 TO len(aData)
TREEITEM aData[r][1] CARGO { aData[r][2] , aData[r][3] }
TREE
FOR t:=1 TO len(aData2)
TREEITEM aData2[t][1] CARGO { aData2[t][2] , aData2[t][3] }
NEXT
ENDTREE
NEXT
ENDTREE
Return oTree
//CONSTRUIMOS EL SEGUNDO TREE
function buildtree2()
Local oTree
Local aData := {}
Local aData2 := {}
Local t,r
aData := ;
{ { "Cuentas", 00,.T. } ;
, { "Comprobantes", 00,.F. } ;
, { "Centros", 00,.F. } ;
, { "Conceptos", 00,.F. } ;
, { "Consultas", 00,.F. } ;
}
aData2 := ;
{ { "Eliminar", 00,.T. } ;
, { "Enviar ", 00,.T. } ;
, { "Procesar ", 00,.T. } ;
, { "Anular ", 00,.T. } ;
}
TREE oTree
FOR r:=1 TO len(aData)
TREEITEM aData[r][1] CARGO { aData[r][2] , aData[r][3] }
TREE
FOR t:=1 TO len(aData2)
TREEITEM aData2[t][1] CARGO { aData2[t][2] , aData2[t][3] }
NEXT
ENDTREE
NEXT
ENDTREE
Return oTree