este ejemplo sta aplicado a una toolbar que contiene botones btnbmp, puede ser facilmente
implementado en botones solitarios.
Code: Select all | Expand
/*-------------------------------------------------------------------------------------------------*/
/*procedimiento que muestra toolbar en dialogo*/
PROCEDURE Clientes_Toolbar()
LOCAL oToolbar
DEFINE BUTTONBAR oToolBar OF oDlg SIZE 70, 60 2010
DEFINE BUTTON NAME "TB_CLOSE" OF oToolBar ACTION oDlg:END() PROMPT "&Salir"
DEFINE BUTTON NAME "TB_ADD" OF oToolBar ACTION Clientes_Editar( TRUE ) PROMPT "&Nuevo" GROUP
DEFINE BUTTON NAME "TB_EDIT" OF oToolBar ACTION Clientes_Editar( FALSE ) PROMPT "&Editar"
DEFINE BUTTON NAME "TB_DELETE" OF oToolBar ACTION Clientes_Borrar() PROMPT "&Borrar"
DEFINE BUTTON NAME "TB_SEARCH" OF oToolBar ACTION Clientes_BuscarXPrestamo() PROMPT "B&uscar"
DEFINE BUTTON NAME "TB_EXPORTXLS" OF oToolBar ACTION Clientes_Exportar() PROMPT "&Exportar" GROUP
DEFINE BUTTON NAME "TB_PRINTER" OF oToolBar ACTION Clientes_Listar() PROMPT "&Imprimir"
DEFINE BUTTON NAME "TB_TABLESMONEY" OF oToolBar ACTION Clientes_Prestamos() PROMPT "&Prestamos" GROUP
DEFINE BUTTON NAME "TB_FILTERADD" OF oToolBar ACTION Clientes_FiltroAplicar() PROMPT "&Filtrar" GROUP
/*muestra barra de estado*/
SET MSGBAR OF oDlg TO "INS=Nuevo, DEL=Borrar, ENTER=Editar, F2=Prestamos, F3=Buscar, F4=Filtrar, F5=Imprimir, F8=Exportar, F9=Refrescar" 2010
oDlg:SetControl( oBrw )
oBrw:nTop += 1
oBrw:nHeight -= 1
oToolBar:bRClicked := {|| TRUE }
oToolBar:bLClicked := {|| TRUE }
/*objeto boton para manejar boton del filtro*/
oBtnFilter := oToolbar:aControls[ 9 ] /*aca tomo el control no. 9 del arreglo aControls que todo control contenedor tiene*/
RETURN
Code: Select all | Expand
/*si selecciono filtrar info*/
IF lFiltrado
IF nFNumCiu = 0 .and. ;
nFNumRut = 0 .and. ;
nFAmbito = 1 .and. ;
nFSaldo = 1 .and. ;
Empty( dFFecIni ) .and. Empty( dFFecFin )
Clientes_FiltroQuitar()
RETURN
ELSE
STORE "" TO cFilter0, cFilter1, cFilter2, cFilter3, cFilter4, cFilter5
IF nFNumCiu > 0
cFilter1 := StrFormat( "NUM_CIUD=%1", AllTrim( Str( nFNumCiu ) ) )
ENDIF
IF nFNumRut > 0
cFilter2 := StrFormat( "NUM_RUTA=%1", AllTrim( Str( nFNumRut ) ) )
ENDIF
IF nFAmbito > 1
IF nFAmbito=2
cFilter3 := "ACTIVO=.T."
ELSE
cFilter3 := "ACTIVO=.F."
ENDIF
ENDIF
IF !Empty( dFFecIni ) .and. !Empty( dFFecFin )
cFilter4 := StrFormat( "(FECHA_ING>=%1 .and. FECHA_ING<=%2)", Var2Str( dFFecIni ), Var2Str( dFFecFin ) )
ENDIF
IF nFSaldo > 1
cFilter5 := "SALDO_ACT>0"
ENDIF
cFilter0 := IIf( !Empty( cFilter1 ), cFilter1 + " .and. ", "" ) +;
IIf( !Empty( cFilter2 ), cFilter2 + " .and. ", "" ) +;
IIf( !Empty( cFilter3 ), cFilter3 + " .and. ", "" ) +;
IIf( !Empty( cFilter4 ), cFilter4 + " .and. ", "" ) +;
IIf( !Empty( cFilter5 ), cFilter5 + " .and. ", "" )
cFilter0 := StrTran( AllTrim( cFilter0 ), " ", " " )
IF Right( cFilter0, 5)==".and."
cFilter0 := SubStr( cFilter0, 1, Len( cFilter0 ) - 5 )
ENDIF
oBtnFilter:LoadBitmaps( "TB_FILTERDEL" )
oBtnFilter:cTooltip := "Elimina filtro aplicado a tabla de datos"
oBtnFilter:Refresh()
IF !Empty( cFilter0 )
CLIE->( cmFilter( cFilter0 ) )
ENDIF
ENDIF
ENDIF
Refrescar_Browse( oBrw )
RETURN
Code: Select all | Expand
/*procedimiento para eliminar filtro en lista de clientes*/
PROCEDURE Clientes_FiltroQuitar()
IF lFiltrado
oBtnFilter:LoadBitmaps( "TB_FILTERADD" )
oBtnFilter:cTooltip := "Agrega filtrado a tabla de datos"
oBtnFilter:Refresh()
CLIE->( cmFilter( "" ) )
lFiltrado := FALSE
ENDIF
Refrescar_Browse( oBrw )
RETURN