home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 16 / CD_ASCQ_16_0994.iso / news / 4611 / fw16d.ins / SOURCE / CLASSES / MENUITEM.PRG < prev    next >
Text File  |  1994-04-19  |  4KB  |  128 lines

  1. #include "FiveWin.ch"
  2.  
  3. #define MF_BYCOMMAND 0
  4. #define MF_ENABLED   0
  5. #define MF_UNCHECKED 0
  6. #define MF_GRAYED    1
  7. #define MF_DISABLED  2
  8. #define MF_CHECKED   8
  9.  
  10. static nId := 100    // To avoid conflicts with MDI automatic MenuItems
  11.  
  12. //----------------------------------------------------------------------------//
  13.  
  14. CLASS TMenuItem
  15.  
  16.    DATA   cPrompt, cMsg
  17.    DATA   nId
  18.    DATA   bAction
  19.    DATA   lChecked, lActive
  20.    DATA   oMenu
  21.    DATA   hBitmap
  22.  
  23.    METHOD New( cPrompt, cMsg, lChecked, lActive, bAction, cBmpFile,;
  24.                cResName, nVKState, nVirtKey ) CONSTRUCTOR
  25.  
  26.    METHOD ReDefine( cPrompt, cMsg, lChecked, lActive, bAction, cBmpFile,;
  27.                     cResName, oMenu, bBlockAction, nId, nVKState,;
  28.                     nVirtKey ) CONSTRUCTOR
  29.  
  30.    METHOD SetCheck( lOnOff ) BLOCK ;
  31.       { | Self, lOnOff | ::lChecked := lOnOff, CheckMenuItem( ::oMenu:hMenu,;
  32.       ::nId, nOR( MF_BYCOMMAND, If( lOnOff, MF_CHECKED, MF_UNCHECKED ) ) ) }
  33.  
  34.    METHOD Enable() BLOCK ;
  35.       { | Self | ::lActive := .t.,;
  36.                  EnableMenuItem( ::oMenu:hMenu, ::nId, MF_ENABLED ) }
  37.  
  38.    METHOD Disable() INLINE ::lActive := .f.,;
  39.       EnableMenuItem( ::oMenu:hMenu, ::nId, nOR( MF_DISABLED, MF_GRAYED ) )
  40.  
  41.    METHOD Release() INLINE If( ::hBitmap != 0, DeleteObject( ::hBitmap ),)
  42.  
  43. ENDCLASS
  44.  
  45. //----------------------------------------------------------------------------//
  46.  
  47. METHOD New( cPrompt, cMsg, lChecked, lActive, bAction, cBmpFile, cResName,;
  48.             nVKState, nVirtKey ) CLASS TMenuItem
  49.  
  50.    DEFAULT lChecked := .f., lActive := .t., cBmpFile := ""
  51.  
  52.    ::bAction  = bAction
  53.    ::cPrompt  = cPrompt
  54.    ::cMsg     = cMsg
  55.    ::nId      = nId++
  56.    ::lChecked = lChecked
  57.    ::lActive  = lActive
  58.    ::hBitmap  = 0
  59.  
  60.    if ! Empty( cBmpFile )
  61.       ::hBitmap = ReadBitmap( 0, cBmpFile )
  62.    endif
  63.    if ! Empty( cResName )
  64.       ::hBitmap = LoadBitmap( GetResources(), cResName )
  65.    endif
  66.  
  67.    if nVirtKey != nil
  68.       __AddAccel( nVKState, nVirtKey, ::nId )
  69.    endif
  70.  
  71. return
  72.  
  73. //----------------------------------------------------------------------------//
  74.  
  75. METHOD ReDefine( cPrompt, cMsg, lChecked, lActive, bAction, cBmpFile,;
  76.                  cResName, oMenu, bBlockAction, nId, nVKState,;
  77.                  nVirtKey ) CLASS TMenuItem
  78.  
  79.    DEFAULT oMenu := ::oMenu
  80.  
  81.    if oMenu != nil
  82.       Self = oMenu:GetMenuItem( nId )
  83.    endif
  84.  
  85.    if lChecked != nil
  86.       if lChecked != ::lChecked
  87.          ::lChecked = lChecked
  88.          if oMenu != nil .and. nId != nil
  89.             CheckMenuItem( oMenu:hMenu, nId, nOr( MF_BYCOMMAND,;
  90.                            If( lChecked, MF_CHECKED, MF_UNCHECKED ) ) )
  91.          endif
  92.       endif
  93.    endif
  94.  
  95.    if lActive != nil
  96.       if lActive != ::lActive
  97.          ::lActive = lActive
  98.          if oMenu != nil .and. nId != nil
  99.             EnableMenuItem( oMenu:hMenu, nId, nOr( MF_BYCOMMAND,;
  100.                             If( lActive, MF_ENABLED, MF_DISABLED ) ) )
  101.          endif
  102.       endif
  103.    endif
  104.  
  105.    ::cMsg     = cMsg
  106.    ::bAction  = bAction
  107.    ::oMenu    = oMenu
  108.    ::hBitmap  = 0
  109.  
  110.    if bBlockAction != nil
  111.       ::bAction = bBlockAction
  112.    endif
  113.  
  114.    if ! Empty( cBmpFile )
  115.       ::hBitmap = ReadBitmap( 0, cBmpFile )
  116.    endif
  117.    if ! Empty( cResName )
  118.       ::hBitmap = LoadBitmap( GetResources(), cResName )
  119.    endif
  120.  
  121.    if nVirtKey != nil
  122.       __AddAccel( nVKState, nVirtKey, ::nId )
  123.    endif
  124.  
  125. return
  126.  
  127. //----------------------------------------------------------------------------//
  128.