si se animan a ayudarme, esta inconclusa....
DLG_TFILTER DIALOG 0, 0, 279, 219
STYLE DS_3DLOOK | DS_CENTER | DS_MODALFRAME | DS_SETFONT | WS_CAPTION | WS_VISIBLE | WS_POPUP | WS_SYSMENU
CAPTION "Condici贸n del filtro"
FONT 9, "Tahoma"
{
聽 聽 EDITTEXT 聽 聽 聽 聽101, 68, 7, 60, 13, ES_AUTOHSCROLL
聽 聽 COMBOBOX 聽 聽 聽 聽102, 212, 7, 60, 67, WS_TABSTOP | WS_TABSTOP | CBS_DROPDOWNLIST | CBS_HASSTRINGS
聽 聽 COMBOBOX 聽 聽 聽 聽103, 7, 44, 77, 30, WS_TABSTOP | WS_TABSTOP | CBS_DROPDOWNLIST | CBS_HASSTRINGS
聽 聽 COMBOBOX 聽 聽 聽 聽104, 89, 44, 33, 30, WS_TABSTOP | WS_TABSTOP | CBS_DROPDOWNLIST | CBS_HASSTRINGS
聽 聽 EDITTEXT 聽 聽 聽 聽105, 127, 44, 138, 13, ES_AUTOHSCROLL
聽 聽 LISTBOX 聽 聽 聽 聽 106, 13, 76, 252, 94, WS_TABSTOP | WS_VSCROLL | LBS_DISABLENOSCROLL | LBS_NOINTEGRALHEIGHT | LBS_SORT | LBS_NOTIFY
聽 聽 PUSHBUTTON 聽 聽 聽"Agregar && Cont.", 107, 13, 175, 65, 14
聽 聽 PUSHBUTTON 聽 聽 聽"Agregar && Final", 108, 80, 175, 65, 14
聽 聽 PUSHBUTTON 聽 聽 聽"&Borrar", 109, 146, 174, 40, 14
聽 聽 PUSHBUTTON 聽 聽 聽"&Limpiar", 110, 225, 174, 40, 14
聽 聽 PUSHBUTTON 聽 聽 聽"&Aceptar", 201, 167, 198, 50, 14
聽 聽 PUSHBUTTON 聽 聽 聽"&Cancelar", 202, 222, 198, 50, 14
聽 聽 LTEXT 聽 聽 聽 聽 聽 "Tabla de datos:", IDC_STATIC, 7, 7, 56, 8, SS_LEFT
聽 聽 LTEXT 聽 聽 聽 聽 聽 "Ordenar por:", IDC_STATIC, 167, 7, 40, 8, SS_LEFT
聽 聽 LTEXT 聽 聽 聽 聽 聽 "", IDC_STATIC, 7, 25, 265, 1, SS_LEFT | SS_SUNKEN
聽 聽 LTEXT 聽 聽 聽 聽 聽 "Campo de la tabla:", IDC_STATIC, 7, 31, 75, 8, SS_LEFT
聽 聽 LTEXT 聽 聽 聽 聽 聽 "Operador:", IDC_STATIC, 89, 31, 33, 8, SS_LEFT
聽 聽 LTEXT 聽 聽 聽 聽 聽 "Informaci贸n:", IDC_STATIC, 127, 31, 134, 8, SS_LEFT
聽 聽 GROUPBOX 聽 聽 聽 聽"Criterio:", IDC_STATIC, 7, 62, 265, 131
}
/*-----------------------------------------------------------------------------*/
#include "credicom.ch"
FUNCTION cGetFilter()
聽 聽LOCAL cExp
聽 聽LOCAL oDlgFilter
聽 聽oDlgFilter := TDlgFilter():new()
聽 聽IF oDlgFilter:Open()
聽 聽 聽 ?oDlgFilter:cFilter
聽 聽ENDIF
RETURN NIL
/*-----------------------------------------------------------------------------*/
CLASS TDlgFilter
聽 聽DATA cAlias
聽 聽DATA cExpression
聽 聽DATA bExpression
聽 聽DATA aListFields
聽 聽DATA aListOrders
聽 聽DATA aListOperators
聽 聽DATA nCountFields
聽 聽DATA nCountOrders
聽 聽DATA oValue, xValue, xPicture
聽 聽METHOD New() CONSTRUCTOR
聽 聽METHOD Open()
聽 聽METHOD aGetFields()
聽 聽METHOD aGetOrders()
聽 聽METHOD GetFirstField() 聽 聽 聽 聽 聽 聽 聽INLINE ::aListFields[ 1 ]
聽 聽METHOD GetFirstOrder() 聽 聽 聽 聽 聽 聽 聽INLINE IIf( ::nCountOrders > 0, ::aListOrders[ 1 ], "#Recno Order" )
聽 聽METHOD GetFirstOperator() 聽 聽 聽 聽 聽 INLINE ::aListOperators[ 1 ]
聽 聽METHOD SetField( cField )
聽 聽METHOD SetOrder( cOrder ) 聽 聽 聽 聽 聽 INLINE MsgInfo( cOrder )
聽 聽METHOD SetOperator( cOperator ) 聽 聽 INLINE MsgInfo( cOperator )
聽 聽METHOD GetBlankValue()
聽 聽METHOD GetPictureValue()
ENDCLASS
/*-----------------------------------------------------------------------------*/
METHOD TDlgFilter:New( cAlias )
聽 聽DEFAULT cAlias := Alias()
聽 聽::cAlias 聽 聽 聽 聽 := cAlias
聽 聽::nCountFields 聽 := (::cAlias)->( FCount() )
聽 聽::nCountOrders 聽 := (::cAlias)->( OrdCount() )
聽 聽::cExpression 聽 聽:= ""
聽 聽::bExpression 聽 聽:= {|| NIL }
聽 聽::aListFields 聽 聽:= ::aGetFields()
聽 聽::aListOrders 聽 聽:= ::aGetOrders()
聽 聽::aListOperators := { "=", "==", ">", ">=", "<", "<=", "$" }
RETURN Self
/*-----------------------------------------------------------------------------*/
METHOD TDlgFilter:Open( oWndParent )
聽 聽LOCAL lResult := FALSE
聽 聽LOCAL oThis := Self
聽 聽LOCAL oDlgFilter
聽 聽LOCAL oFntFilter
聽 聽LOCAL nField, nOperator
聽 聽LOCAL cExp, acExp
聽 聽PRIVATE xInfo, oInfo, cPicture
聽 聽DEFAULT oWndParent := GetWndDefault()
聽 聽cAlias 聽 聽 聽 聽 := ::cAlias
聽 聽cOrder 聽 聽 聽 聽 := ::GetFirstOrder()
聽 聽cField 聽 聽 聽 聽 := ::GetFirstField()
聽 聽cOperator 聽 聽 聽:= ::GetFirstOperator()
聽 聽oThis:xValue 聽 := ::GetBlankValue( cField )
聽 聽oThis:xPicture := ::GetPictureValue( cField )
聽 聽cExp 聽 聽 聽 聽 := ""
聽 聽acExp 聽 聽 聽 聽:= Array( 10 )
聽 聽AFill( acExp, "" )
聽 聽DEFINE FONT oFntFilter NAME "Tahoma" SIZE 0, -12
聽 聽DEFINE DIALOG oDlgFilter NAME "DLG_TFILTER" OF oWndParent ICON GetIcon() FONT oFntFilter
聽 聽REDEFINE GET 聽 聽 聽cAlias 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ID 101 OF oDlgFilter WHEN FALSE
聽 聽REDEFINE COMBOBOX cOrder 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ID 102 OF oDlgFilter ITEMS oThis:aListOrders 聽 聽ON CHANGE oThis:SetOrder( cOrder )
聽 聽REDEFINE COMBOBOX cField 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽ID 103 OF oDlgFilter ITEMS oThis:aListFields 聽 聽ON CHANGE oThis:SetField( cField )
聽 聽REDEFINE COMBOBOX cOperator 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 ID 104 OF oDlgFilter ITEMS oThis:aListOperators ON CHANGE oThis:SetOperator( cOperator )
聽 聽REDEFINE GET 聽 聽 聽oThis:oValue VAR 聽oThis:xValue 聽ID 105 OF oDlgFilter PICTURE oThis:xPicture
聽 聽REDEFINE LISTBOX 聽cExp ITEMS acExp ID 106 OF oDlgFilter
聽 聽REDEFINE BUTTON ID 107 OF oDlgFilter ACTION dummy()
聽 聽REDEFINE BUTTON ID 108 OF oDlgFilter ACTION dummy()
聽 聽REDEFINE BUTTON ID 109 OF oDlgFilter ACTION dummy()
聽 聽REDEFINE BUTTON ID 110 OF oDlgFilter ACTION dummy()
聽 聽REDEFINE BUTTON ID 201 OF oDlgFilter ACTION ( lResult := TRUE, 聽oDlgFilter:END() )
聽 聽REDEFINE BUTTON ID 202 OF oDlgFilter ACTION ( lResult := FALSE, oDlgFilter:END() ) CANCEL
聽 聽ACTIVATE DIALOG oDlgFilter CENTER
聽 聽RELEASE xInfo, oInfo, cPicture
RETURN lResult
/*-----------------------------------------------------------------------------*/
METHOD TDlgFilter:aGetFields()
聽 聽LOCAL x
聽 聽LOCAL acFields := Array( ::nCountFields )
聽 聽FOR x := 1 TO ::nCountFields
聽 聽 聽 acFields[ x ] := (::cAlias)->( FieldName( x ) )
聽 聽NEXT
RETURN acFields
/*-----------------------------------------------------------------------------*/
METHOD TDlgFilter:aGetOrders()
聽 聽LOCAL x
聽 聽LOCAL acOrders := Array( ::nCountOrders )
聽 聽FOR x:=1 TO ::nCountOrders
聽 聽 聽 acOrders[x] := (::cAlias)->( OrdName( x ) )
聽 聽NEXT
RETURN acOrders
/*-----------------------------------------------------------------------------*/
METHOD TDlgFilter:GetBlankValue( cField )
聽 聽LOCAL nPos 聽:= (::cAlias)->( FieldPos( cField ) )
聽 聽LOCAL nType := (::cAlias)->( FieldType( nPos ) )
聽 聽LOCAL xValue 聽 := NIL
聽 聽DO CASE
聽 聽CASE nType == "C"
聽 聽 聽 xValue 聽 := Space( (::cAlias)->( FieldLen( nPos 聽) ) )
聽 聽CASE nType == "N"
聽 聽 聽 xValue := 0
聽 聽CASE nType == "D"
聽 聽 聽 xValue 聽 := CToD("")
聽 聽CASE nType == "L"
聽 聽 聽 xValue := FALSE
聽 聽ENDCASE
RETURN xValue
/*-----------------------------------------------------------------------------*/
METHOD TDlgFilter:GetPictureValue( cField )
聽 聽LOCAL nPos 聽:= (::cAlias)->( FieldPos( cField ) )
聽 聽LOCAL nType := (::cAlias)->( FieldType( nPos ) )
聽 聽LOCAL nLen, nDec
聽 聽LOCAL cPicture := ""
聽 聽DO CASE
聽 聽CASE nType == "C"
聽 聽 聽 cPicture := "@!"
聽 聽CASE nType == "N"
聽 聽 聽 nLen := (::cAlias)->( FieldLen( nPos 聽) )
聽 聽 聽 nDec := (::cAlias)->( FieldDec( nPos 聽) )
聽 聽 聽 cPicture := Replicate( "9", nLen ) + IIf( nDec > 0, ( "." + Replicate( "9", nDec )), "" )
聽 聽CASE nType == "D"
聽 聽 聽 cPicture := "@D"
聽 聽CASE nType == "L"
聽 聽 聽 cPicture := "L"
聽 聽ENDCASE
RETURN cPicture
/*-----------------------------------------------------------------------------*/
METHOD TDlgFilter:SetField( cField )
聽 聽::xValue 聽 := ::GetBlankValue( cField )
聽 聽::xPicture := ::GetPictureValue( cField )
聽 聽::oValue:refresh()
RETURN NIL
/*-----------------------------------------------------------------------------*/
/*EOF*/
/*-----------------------------------------------------------------------------*/