/* * Xailer source code: * * DBSwitch.prg * Clase TDBSwitch() * * Copyright 2003, 2016 Ignacio Ortiz de Zúñiga * Copyright 2003, 2016 Xailer.com * All rights reserved * */ #include "Xailer.ch" //-------------------------------------------------------------------------- CLASS XDBSwitch FROM TSwitch 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. PROTECTED: DATA lLocked INIT .T. PUBLIC: PROPERTY lChecked PROPERTY Value READ INLINE ::lChecked WRITE INLINE ::FValue := ( ::lChecked := Value ) METHOD Refresh( lValue ) // --> lSuccess METHOD Free() INLINE ( ::SetDataSet( , .T. ), ::Super:Free() ) METHOD Toggle() // --> Nil METHOD DbLinked() INLINE ( ValType( ::oDataField ) == "O" ) RESERVED: METHOD SetDataSet( Value ) EXTERN DC_SetDataSet METHOD SetFieldObject( oField ) EXTERN DC_SetFieldObject METHOD ResetDataField() EXTERN DC_ResetDataField METHOD SetData() EXTERN DC_SetData METHOD GetData() EXTERN DC_GetData METHOD Lock() INLINE ::lLocked := .T. METHOD UnLock() INLINE ::lLocked := ! ::lEditable METHOD WMKeyDown(f,l,h) INLINE IIF( ::lLocked, 0, ::Super:WMKeyDown( f,l,h ) ) METHOD WMLButtonDown(w,l,h,n,e) INLINE IIf( ::lLocked, 0, ::Super:WMLButtonDown(w,l,h,n,e) ) METHOD WMLButtonDblClk() INLINE IIf( ! ::lLocked, Nil, ( ::SetFocus(), 0 ) ) ENDCLASS //-------------------------------------------------------------------------- METHOD Refresh( lRedraw ) CLASS XDBSwitch IF Valtype( ::oDataField ) == "O" .AND. ::oDataSet != Nil .AND. ! ::oDataSet:lOnEdit() ::Value := ::oDataField:Value ENDIF RETURN ::Super:Refresh( lRedraw ) //-------------------------------------------------------------------------- METHOD Toggle() CLASS XDBSwitch IF ! ::lLocked ::Super:Toggle() IF ::oDataSet:lOnEdit() .AND. Valtype( ::oDataField ) == "O" ::oDataField:SetValue( ::Value, .T. ) ENDIF ENDIF RETURN Nil //--------------------------------------------------------------------------