/* * Xailer source code: * * DbMaskEdit.prg * Clase TDbMaskEdit() * * Copyright 2003, 2007 Ignacio Ortiz de Zúñiga * Copyright 2003, 2007 Xailer.com * All rights reserved * */ #include "Xailer.ch" //-------------------------------------------------------------------------- CLASS XDbMaskEdit FROM TMaskEdit PUBLISHED: PROPERTY oDataSet WRITE SetDataSet EDITOR PE_Component AS TDataSet PROPERTY oDataField WRITE SetFieldObject EDITOR PE_DataField AS TDataField PROPERTY lEditable INIT .T. PROPERTY lAutoSave INIT .T. PUBLIC: PROPERTY Value PROPERTY lReadOnly INIT .T. WRITE METHOD SetReadOnly METHOD Refresh( lValue ) // --> lResult METHOD Change() // --> Nil METHOD DbLinked() INLINE ( ValType( ::oDataField ) == "O" ) RESERVED: METHOD SetDataSet( Value ) EXTERN DC_SetDataSet METHOD DCSetFieldObject( oField ) EXTERN DC_SetFieldObject METHOD ResetDataField() EXTERN DC_ResetDataField METHOD SetFieldObject( oField ) METHOD SetData() EXTERN DC_SetData METHOD GetData() EXTERN DC_GetData METHOD SetReadOnly( Value ) METHOD Lock() INLINE ::lReadOnly := .T. METHOD UnLock() INLINE ::lReadOnly := ! ::lEditable METHOD Free() INLINE ( ::SetDataSet( , .T. ), ::Super:Free() ) ENDCLASS //-------------------------------------------------------------------------- METHOD Refresh( lValue ) CLASS XDbMaskEdit IF Valtype( ::oDataField ) == "O" .AND. ::oDataSet != Nil .AND. ! ::oDataSet:lOnEdit() ::Value := ::oDataField:Value ENDIF RETURN ::Super:Refresh( lValue ) //-------------------------------------------------------------------------- METHOD SetFieldObject( xField ) CLASS XDbMaskEdit ::DCSetFieldObject( xField ) IF Valtype( ::FoDataField ) == "O" ::nMaxLength := ::FoDataField:nLen ENDIF RETURN Nil //-------------------------------------------------------------------------- METHOD SetReadOnly( Value ) CLASS XDbMaskEdit IF ::oDataSet == Nil .OR. ( ::oDataSet != Nil .AND. ! ::oDataSet:lOnEdit() ) Value := .T. ENDIF RETURN ::Super:SetReadOnly( Value ) //-------------------------------------------------------------------------- METHOD Change() CLASS XDBMaskEdit ::Super:Change() IF ::oDataSet != Nil .AND. ::oDataSet:lOnEdit() .AND. Valtype( ::oDataField ) == "O" ::oDataField:SetValue( ::Value, .T. ) ENDIF RETURN Nil //--------------------------------------------------------------------------