home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SOURCE / CLASSES / RADIO.PRG < prev    next >
Text File  |  1994-06-10  |  3KB  |  112 lines

  1. #include "FiveWin.ch"
  2. #include "Constant.ch"
  3.  
  4.  
  5. #define BM_GETCHECK         (WM_USER+0)
  6. #define BM_SETCHECK         (WM_USER+1)
  7. #define LTGRAY_BRUSH                  1
  8.  
  9. #define GCW_HCURSOR               (-12)
  10.  
  11. //----------------------------------------------------------------------------//
  12.  
  13. CLASS TRadio FROM TControl
  14.  
  15.    DATA   lChecked             // to init correctly its state
  16.    DATA   oRadMenu
  17.    DATA   nPos
  18.  
  19.    METHOD New( nRow, nCol, cCaption, lGroup, lChecked, nPos, oWnd, oRadMenu,;
  20.                nHelpId, nClrText, nClrPane, cMsg, lUpdate ) CONSTRUCTOR
  21.  
  22.    METHOD Redefine( nID, lChecked, nPos, oDlg, oRadMenu, ;
  23.                     nHelpID, nClrText, nClrPane, cMsg,;
  24.                     lUpdate ) CONSTRUCTOR
  25.  
  26.    METHOD Click()      INLINE  ::oRadMenu:nOption := ::nPos
  27.    METHOD cToChar()    INLINE  Super:cToChar( "BUTTON" )
  28.  
  29.    METHOD Init( hDlg ) INLINE  Super:Init( hDlg ),;
  30.                                ::SetCheck( ::lChecked )
  31.  
  32.    METHOD MouseMove( nRow, nCol, nKeyFlags )
  33.  
  34.    METHOD SetCheck( lOnOff ) INLINE  ::lChecked := lOnOff,;
  35.                                ::SendMsg( BM_SETCHECK, If( lOnOff, 1, 0 ) )
  36.  
  37.    METHOD lIsChecked() INLINE  ::lChecked := ( ::SendMsg( BM_GETCHECK ) == 1 )
  38.  
  39. ENDCLASS
  40.  
  41. //----------------------------------------------------------------------------//
  42.  
  43. METHOD New( nRow, nCol, cCaption, lGroup, lChecked, nPos, oWnd, oRadMenu,;
  44.             nHelpId, nClrText, nClrPane, cMsg, lUpdate ) CLASS TRadio
  45.  
  46.    DEFAULT lChecked := .f., lGroup := .f., nPos := 1,;
  47.            nHelpId := 100, lUpdate := .f.
  48.  
  49.    ::nTop      = nRow * RAD_CHARPIX_H    // 13
  50.    ::nLeft     = ( nCol * RAD_CHARPIX_W ) + 4  //  7
  51.    ::nBottom   = ::nTop + 12
  52.    ::nRight    = ::nLeft + ( Len( cCaption ) * 5 )
  53.    ::cCaption  = cCaption
  54.    ::nStyle    = nOR( WS_CHILD, WS_VISIBLE, BS_AUTORADIOBUTTON,;
  55.                       If( lGroup, WS_GROUP, 0 ) )
  56.    ::nId       = ::GetNewId()
  57.    ::nHelpId   = nHelpId
  58.    ::lChecked  = lChecked
  59.    ::nPos      = nPos
  60.    ::oWnd      = oWnd
  61.    ::oRadMenu  = oRadMenu
  62.    ::lDrag     = .f.
  63.    ::lCaptured = .f.
  64.    ::cMsg      = cMsg
  65.    ::lUpdate   = lUpdate
  66.  
  67.    ::SetColor( nClrText, nClrPane )
  68.  
  69.    if oWnd:lVisible
  70.       ::Create( "BUTTON" )
  71.       oWnd:AddControl( Self )
  72.    else
  73.       oWnd:DefControl( Self )
  74.    endif
  75.  
  76. return nil
  77.  
  78. //---------------------------------------------------------------------------//
  79.  
  80. METHOD Redefine( nID, lChecked, nPos, oDlg, oRadMenu, nHelpID, nClrText,;
  81.                  nClrPane, cMsg, lUpdate ) CLASS TRadio
  82.  
  83.    DEFAULT lChecked := .f., nPos := 1,;
  84.            nHelpId := 100, lUpdate := .f.
  85.  
  86.    ::nId       = nID
  87.    ::nHelpId   = nHelpId
  88.    ::oWnd      = oDlg
  89.    ::oRadMenu  = oRadMenu
  90.    ::lChecked  = lChecked
  91.    ::nPos      = nPos
  92.    ::lDrag     = .f.
  93.    ::lCaptured = .f.
  94.    ::cMsg      = cMsg
  95.    ::lUpdate   = lUpdate
  96.  
  97.    ::SetColor( nClrText, nClrPane )
  98.  
  99.    oDlg:DefControl( Self )
  100.  
  101. return nil
  102.  
  103. //----------------------------------------------------------------------------//
  104.  
  105. METHOD MouseMove( nRow, nCol, nKeyFlags ) CLASS TRadio
  106.  
  107.    local nResult := Super:MouseMove( nRow, nCol, nKeyFlags )
  108.  
  109. return If( ::lDrag, nResult, nil )    // We want standard behavior !!!
  110.  
  111. //----------------------------------------------------------------------------//
  112.