Nose si esto te ayude, estoy ahorita haciendo algo a lo que quieres con folder...saludos...
#include "FiveWin.ch"
#include "XBrowse.ch"
MEMVAR oDatos
STATIC oWndGrupos, oBrw, aBtnBar[10], oBar, lNew, oFldx
FUNCTION mgrupos() // MAESTRO DE GRUPOS
聽 聽LOCAL oDlg, oError, cQry, oQry, aCampos := {}, aVar[3], aGet[3]
聽 聽lNew := .t.
聽 聽TGet():lDisColors := .f.
聽 聽cQry := "SELECT * FROM inv_grupos " +;
聽 聽 聽 "WHERE empresa_id = '" + oDatos:emp_codigo +;
聽 聽 聽 "' ORDER BY gru_codigo, gru_nombre ASC"
聽 聽TRY
聽 聽 聽 oQry := TDolphinQry():New( cQry, oDatos:oConex )
聽 聽CATCH oError
聽 聽 聽 MSGSTOP( oError:description() + CRLF + CRLF + ;
聽 聽 聽 聽 聽 聽 聽 聽"Error Ejecuci贸n de Sentencia en Tabla(inv_grupos): " + ;
聽 聽 聽 聽 聽 聽 聽 聽CRLF + CRLF + cQry, oDatos:cTitMsg )
聽 聽 聽 RETURN NIL
聽 聽END
聽 聽IF oWndGrupos == NIL
// DEFINO WND
聽 聽 聽 DEFINE WINDOW oWndGrupos BORDER SINGLE MDICHILD ;
聽 聽 聽 聽 聽STYLE nOr( WS_CAPTION, WS_VISIBLE, WS_SYSMENU, WS_MINIMIZEBOX ) ;
聽 聽 聽 聽 聽FROM 0, 1.0 TO 30.0, 107.0 ;
聽 聽 聽 聽 聽TITLE oDatos:cTit + "- Maestro de Grupos" ;
聽 聽 聽 聽 聽OF oDatos:oWndPPAL
// DEFINO BARRA DE BOTONES Y BOTONES
聽 聽 聽 DEFINE BUTTONBAR oBar SIZE 50, 50 OF oWndGrupos 2010
聽 聽 聽 oBar:bRClicked := {|| NIL }
聽 聽 聽 DEFINE BUTTON aBtnBar[1] OF oBar NOBORDER GROUP ;
聽 聽 聽 聽 聽RESOURCE "NUEVO32" ;
聽 聽 聽 聽 聽Tooltip "Crear Registro" ;
聽 聽 聽 聽 聽ACTION ( lNew := .t., cargadata( oQry, aVar, aGet ) ,;
聽 聽 聽 聽 聽 聽 oFldx:aDialogs[2]:aEvalwhen(), oFldx:SetOption(2) )
聽 聽 聽 DEFINE BUTTON aBtnBar[2] OF oBar NOBORDER ;
聽 聽 聽 聽 聽RESOURCE "MODIFI32" ;
聽 聽 聽 聽 聽Tooltip "Modificar Registro" ;
聽 聽 聽 聽 聽ACTION ( lNew := .f., cargadata( oQry, aVar, aGet ) ,;
聽 聽 聽 聽 聽 聽 oFldx:aDialogs[2]:aEvalwhen(), oFldx:SetOption(2) ) ;
聽 聽 聽 聽 聽WHEN ( oQry:RecCount() > 0 )
聽 聽 聽 DEFINE BUTTON aBtnBar[3] OF oBar NOBORDER ;
聽 聽 聽 聽 聽RESOURCE "ELIMI32" ;
聽 聽 聽 聽 聽Tooltip "Eliminar Registros" ;
聽 聽 聽 聽 聽ACTION ( eliminar( oQry, oBrw, "gru_codigo" ), inivar( aVar ) ,;
聽 聽 聽 聽 聽 聽 iniget( aGet ), oFldx:aDialogs[2]:aEvalwhen(), oFldx:SetOption(1) ) ;
聽 聽 聽 聽 聽WHEN ( oQry:RecCount() > 0 )
聽 聽 聽 DEFINE BUTTON aBtnBar[4] OF oBar NOBORDER ; 聽 聽// ESTA PENDIENTE...
聽 聽 聽 聽 聽RESOURCE "CANCEL32" ;
聽 聽 聽 聽 聽Tooltip "Cancelar Registros" ;
聽 聽 聽 聽 聽ACTION Alert("Cancelar...Pendiente...")
聽 聽 聽 DEFINE BUTTON aBtnBar[5] OF oBar NOBORDER ;
聽 聽 聽 聽 聽RESOURCE "SALVAR32" ;
聽 聽 聽 聽 聽Tooltip "Grabar los Datos" ;
聽 聽 聽 聽 聽ACTION ( grabagrupo( oQry, aVar ), inivar( aVar ), iniget( aGet ) )
聽 聽 聽 DEFINE BUTTON aBtnBar[6] OF oBar NOBORDER ;
聽 聽 聽 聽 聽RESOURCE "EXPOR32" ;
聽 聽 聽 聽 聽Tooltip "Exportar los Datos" ;
聽 聽 聽 聽 聽ACTION ( MSGINFO("Botones de la BAR") ) ;
聽 聽 聽 聽 聽WHEN ( oQry:RecCount() > 0 )
聽 聽 聽 DEFINE BUTTON aBtnBar[9] OF oBar NOBORDER GROUP ;
聽 聽 聽 聽 聽RESOURCE "PRINT32" ;
聽 聽 聽 聽 聽Tooltip "Imprimir Listado" ;
聽 聽 聽 聽 聽ACTION ( oBrw:REPORT() ) ;
聽 聽 聽 聽 聽WHEN ( oQry:RecCount() > 0 )
聽 聽 聽 DEFINE BUTTON aBtnBar[10] OF oBar NOBORDER GROUP ;
聽 聽 聽 聽 聽RESOURCE "SALIR32" ;
聽 聽 聽 聽 聽Tooltip "Salir al Menu" ;
聽 聽 聽 聽 聽ACTION ( lNew := NIL, oWndGrupos:END() )
聽 聽 聽 aBtnBar[10]:lCancel := .t.
聽 聽 聽 SET MESSAGE OF oWndGrupos TO " Inventario - Maestro de Grupos" 2007
// DEFINO DLG
聽 聽 聽 DEFINE DIALOG oDlg RESOURCE "DLG_NOWAIT" OF oWndGrupos
// DEFINO FOLDER
聽 聽 聽 REDEFINE FOLDEREX oFldx ID 401 OF oDlg ;
聽 聽 聽 聽 聽PROMPT "Listado", "Datos" ;
聽 聽 聽 聽 聽BITMAPS "CONFIG16", "GRUPO16" ;
聽 聽 聽 聽 聽DIALOGS "INV_BROWSE", "INV_CORTOS"
// DIALOGO 1
聽 聽 聽 aCampos := {"gru_codigo", "gru_nombre"}
聽 聽 聽 oBrw := TXBrowse():New( oFldx:aDialogs[1] )
聽 聽 聽 WITH OBJECT oBrw
聽 聽 聽 聽 聽:SetDolphin( oQry, .t., .t., aCampos )
聽 聽 聽 聽 聽:nMarqueeStyle 聽 聽 聽 := MARQSTYLE_HIGHLROW
聽 聽 聽 聽 聽:nStretchCol 聽 聽 聽 聽 := STRETCHCOL_LAST
聽 聽 聽 聽 聽:lColDividerComplete := .t.
聽 聽 聽 聽 聽:lAllowColHiding 聽 聽 := .f.
聽 聽 聽 聽 聽:nHeaderHeight 聽 聽 聽 := 30
聽 聽 聽 聽 聽:lFooter 聽 聽 聽 聽 聽 聽 := .t.
聽 聽 聽 聽 聽:lRecordSelector 聽 聽 := .t.
聽 聽 聽 聽 聽:bClrStd := {|| IF( oQry:RecNo() % 2 == 0, {CLR_BLACK, CLR_WHITE} ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽{0, RGB(203,226,254)} ) }
聽 聽 聽 END WITH
聽 聽 聽 WITH OBJECT oBrw:aCols[1]
聽 聽 聽 聽 聽:cHeader 聽 聽 聽 := "C贸digo"
聽 聽 聽 聽 聽:bEditValue 聽 聽:= {|| IIF( oQry:LastRec() == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oQry:gru_codigo ) }
聽 聽 聽 聽 聽:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽 聽:nDataStrAlign := AL_LEFT
聽 聽 聽 聽 聽:nWidth 聽 聽 聽 聽:= 100
聽 聽 聽 END WITH
聽 聽 聽 WITH OBJECT oBrw:aCols[2]
聽 聽 聽 聽 聽:cHeader 聽 聽 聽 := "Nombre / Descripci贸n"
聽 聽 聽 聽 聽:bEditValue 聽 聽:= {|| IIF( oQry:LastRec() == 0, SPACE(10) ,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oQry:gru_nombre ) }
聽 聽 聽 聽 聽:nHeadStrAlign := AL_CENTER
聽 聽 聽 聽 聽:nDataStrAlign := AL_LEFT
聽 聽 聽 聽 聽:nWidth 聽 聽 聽 聽:= 200
聽 聽 聽 END WITH
聽 聽 聽 oBrw:CreateFromResource(100)
聽 聽 聽 oBrw:GOTOP(); oBrw:REFRESH()
// DIALOGO 2
聽 聽 聽 REDEFINE GET aGet[1] VAR aVar[1] ID 4004 PICTURE "@!" OF oFldx:aDialogs[2] UPDATE ;
聽 聽 聽 聽 聽VALID ( existe( oQry, aVar[1], aGet[1], "gru_codigo" ) ) ;
聽 聽 聽 聽 聽WHEN ( lNew )
聽 聽 聽 REDEFINE GET aGet[2] VAR aVar[2] ID 4005 OF oFldx:aDialogs[2] UPDATE ;
聽 聽 聽 聽 聽VALID ( novacio( aVar[2] ) ) ;
聽 聽 聽 聽 聽WHEN ( !EMPTY( aVar[1] ) )
聽 聽 聽 REDEFINE GET aGet[3] VAR aVar[3] MEMO ID 199 OF oFldx:aDialogs[2] UPDATE ;
聽 聽 聽 聽 聽WHEN ( !EMPTY( aVar[2] ) )
聽 聽 聽 ACTIVATE DIALOG oDlg NOWAIT ON CLICK oDlg:UPDATE ;
聽 聽 聽 聽 聽ON INIT ( oDlg:MOVE( oBar:nHeight, 0 ) ) ;
聽 聽 聽 聽 聽VALID( !GETKEYSTATE( 27 ) )//VALID ( .f. )
聽 聽 聽 ACTIVATE WINDOW oWndGrupos ;//ON INIT ( oFldx:SetFocus() ) ;
聽 聽 聽 聽 聽ON INIT ( oWndGrupos:SetSize( oDlg:nWidth, oDlg:nHeight, .t. ) ) ;
聽 聽 聽 聽 聽VALID ( oWndGrupos := NIL, .t. )
聽 聽ELSE
聽 聽 聽 oWndGrupos:Restore()
聽 聽 聽 oWndGrupos:SetFocus()
聽 聽ENDIF
RETURN NIL
[img]http://sim1.subirimagenes.net/img/2015/01/05//150105042131406823.jpg" alt="" loading="lazy">