/* * Xailer source code: * * CheckBox.prg * Clase TCheckBox() * * Copyright 2003, 2007 Jose F. Gimenez * Copyright 2003, 2007 Xailer.com * All rights reserved * */ #include "Xailer.ch" //-------------------------------------------------------------------------- CLASS XCheckBox FROM TStdControl PUBLISHED: PROPERTY nWidth INIT 90 PROPERTY nHeight INIT 18 PROPERTY lChecked INIT .F. READ METHOD GetChecked WRITE METHOD SetChecked PROPERTY nAlignment INIT taRIGHT WRITE INLINE ( ::FnAlignment := Value, ::ChangeCtlStyle( BS_LEFTTEXT, ( Value == taLEFT ) ) ) ; VALUES taRIGHT, taLEFT PROPERTY nVAlignment INIT vaCENTER WRITE INLINE ( ::FnVAlignment := Value, ; ::ChangeCtlStyle( BS_TOP, Value == vaTOP ), ; ::ChangeCtlStyle( BS_BOTTOM, Value == vaBOTTOM ) ) ; VALUES vaTOP, vaCENTER, vaBOTTOM PROPERTY lMultiLine INIT .F. WRITE INLINE ::FlMultiLine := Value, ::ChangeCtlStyle( BS_MULTILINE, Value ) PROPERTY lTransparent INIT .T. PROPERTY lPushLike INIT .F. WRITE INLINE ::FlPushLike := Value, ::ChangeCtlStyle( BS_PUSHLIKE, Value ) EVENT OnChange( oSender ) // --> Nil EVENT OnClick( oSender ) // --> Nil PUBLIC: PROPERTY oBrush // propiedades no aplicables PROPERTY nClrPane PROTECTED: PROPERTY l3D PROPERTY lBorder DATA cWinClassName INIT "BUTTON" DATA nCtlStyle INIT nOr( WS_CHILD, WS_CLIPCHILDREN, WS_CLIPSIBLINGS, BS_CHECKBOX ) PUBLIC: METHOD Create( oParent ) CONSTRUCTOR METHOD Toggle() INLINE ::SetChecked( ! ::GetChecked() ), ::OnChange() // --> Nil METHOD Click() INLINE ::Toggle(), ::OnClick(), 0 RESERVED: METHOD GetChecked() METHOD SetChecked( lValue ) METHOD Notify( nWParam, nLParam ) EXTERN XButton_Notify() METHOD WMEraseBkgnd( hDC ) INLINE 1 METHOD WMPaint() EXTERN XButton_WMPaint() METHOD XAClick() VIRTUAL ENDCLASS //-------------------------------------------------------------------------- METHOD Create( oParent ) CLASS XCheckBox ::Super:Create( oParent ) ::SetChecked( ::FlChecked ) RETURN Self //-------------------------------------------------------------------------- METHOD GetChecked() CLASS XCheckBox IF ! Empty( ::Handle ) ::FlChecked := ( ::SendMsg( BM_GETCHECK, 0, 0 ) == BST_CHECKED ) ENDIF RETURN ::FlChecked //-------------------------------------------------------------------------- METHOD SetChecked( lValue ) CLASS XCheckBox IF Valtype( lValue ) == "N" lValue := ( lValue != 0 ) ENDIF UPDATE ::FlChecked TO lValue IF ! Empty( ::Handle ) ::SendMsg( BM_SETCHECK, IIf( ::FlChecked, BST_CHECKED, BST_UNCHECKED ), 0 ) ENDIF RETURN ::FlChecked //--------------------------------------------------------------------------