Gracias al Cristobal Navarro. pongo el codigo completo. muchas gracuas
include "xbrowse.ch"
Static aSelected := {}
Static oTree
//----------------------------------------------------------------------------//
Function Main()
local oDlg, oImageList, n, ncargo
local oBtt2
local oFnt
DEFINE FONT oFnt NAME "Calibri" SIZE 0, -16
DEFINE DIALOG oDlg TITLE "Tipos de Servicios" SIZE 600, 650 FONT oFnt
oDlg:lHelpIcon := .F.
@ 10, 15 BTNBMP oBtt2 PROMPT "Selecccionados" FILENAME "..\bitmaps\link.bmp" OF oDlg ;
ACTION ( aSelected := {},NewSelected( oTree:aItems ), XBrowse( aSelected ) ) SIZE 80, 32 LEFT
@ 0.5, 20 TREEVIEW oTree OF oDlg SIZE 170, 300 COLOR Rgb( 128, 128, 128 ), GetSysColor( 5 ) CHECK
oTree:nStyle += WS_BORDER
oTree:bLClicked := { | nRow, nCol, nKeyFlags | NewClick( nRow, nCol ) }
ACTIVATE DIALOG oDlg CENTERED ON INIT ( AddItems( oImageList ), oTree:Expand() )
RELEASE FONT oFnt
Return NIL
//----------------------------------------------------------------------------//
Function AddItems( oImageList )
local oItem1, oItem2, oItem3, oItem4, oItem5, oItem6
local oItem11, oItem12, oItem13, oItem14, oItem15, oItem16
local oItem21, oItem22, oItem23
local oItem31, oItem32
local oItem41, oItem42, oItem43
local oItem51
local oItem61, oItem62
local Mydate, Mytime
Mydate := DATE()
Mytime := TIME()
if !Empty( oImageList )
oTree:SetImageList( oImageList )
endif
oItem1 := oTree:Add( "LAVADOS", 0 )
oItem11 := oItem1:Add( "INTERIOR", 2)
//oItem11:Cargo :={ "CHECKBOX", 2, oItem1 }
oItem12 := oItem1:Add( "EXTERIOR", 2)
//oItem12:Cargo :={ "CHECKBOX", 3, oItem1 }
oItem13 := oItem1:Add( "MOTOR", 2)
//oItem13:Cargo :={ "CHECKBOX", 2, oItem1 }
oItem14 := oItem1:Add( "CHASIS", 2)
//oItem14:Cargo :={ "CHECKBOX", 2, oItem1 }
oItem15 := oItem1:Add( "PULVERIZADO", 2)
//oItem15:Cargo :={ "CHECKBOX", 2, oItem1 }
oItem16 := oItem1:Add( "FITOSOI", 2)
//oItem16:Cargo :={ "CHECKBOX", 2, oItem1 }
oItem2 := oTree:Add( "NEUMATICOS", 0 )
oItem21 := oItem2:Add( "MONTAJE", 2 )
//oItem21:Cargo := { "CHECKBOX", 2, oItem2 }
oItem22 := oItem2:Add( "BALANCEO", 2 )
//oItem22:Cargo := { "CHECKBOX", 2, oItem2 }
oItem23 := oItem2:Add( "ARREGLO", 2 )
//oItem23:Cargo := { "CHECKBOX", 2, oItem2 }
oItem3 := oTree:Add( "ALINEACION", 0 )
oItem31 := oItem3:Add( "REVISION ALINEACION", 2 )//; oItem31:Cargo := { "CHECKBOX", 2, oItem3 }
oItem32 := oItem3:Add( "ALINEACION", 2 ) //; oItem32:Cargo := { "CHECKBOX", 2, oItem3 }
oItem4 := oTree:Add( "CAMBIO DE ACEITE", 0 )
oItem41 := oItem4:Add( "MOTOR", 2 ) //; oItem41:Cargo := { "CHECKBOX", 2, oItem4 }
oItem42 := oItem4:Add( "CAJA", 2 ) //; oItem42:Cargo := { "CHECKBOX", 2, oItem4 }
oItem43 := oItem4:Add( "DIFERENCIAL", 2 ) //; oItem43:Cargo := { "CHECKBOX", 2, oItem4 }
oItem5 = oTree:Add( "ENGRASE", 0 )
oItem51 = oItem5:Add( "ENGRASE", 2 ) //; oItem51:Cargo:={ "CHECKBOX", 2, oItem5 }
oItem6 = oTree:Add( "SERVICIOS VARIOS", 0 )
oItem61 = oItem6:Add( "MECANICA", 2 ) //; oItem61:Cargo:={ "CHECKBOX", 2, oItem6 }
oItem62 = oItem6:Add( "ELECTRICO", 2 ) //; oItem62:Cargo:={ "CHECKBOX", 2, oItem6 }
Return NIL
//----------------------------------------------------------------------------//
Function NewClick( nRow, nCol )
local oItem
oItem := oTree:HitTest( nRow, nCol )
if !Empty( oItem )
if Len( oItem:aItems ) > 0
AEVal( oItem:aItems, { | o | oTree:SetCheck( o, !oTree:GetCheck( o ) ) } )
endif
endif
Return nil
//----------------------------------------------------------------------------//
Function NewSelected( aItems )
local x ,oItem
For x = 1 to Len( aItems )
oItem := aItems[ x ]
if Len( oItem:aItems ) == 0
if oTree:GetCheck( oItem )
AAdd( aSelected, oItem:cPrompt )
endif
else
NewSelected( oItem:aItems )
endif
Next x
*/
Return nil
Saludos