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

  1. #include "FiveWin.ch"
  2.  
  3. //----------------------------------------------------------------------------//
  4.  
  5. CLASS TRadMenu
  6.  
  7.    DATA   aItems
  8.    DATA   bSetGet
  9.    DATA   bClick
  10.    DATA   cMsg
  11.    DATA   lUpdate
  12.  
  13.    METHOD New( nRow, nCol, acItems, bSetGet, oWnd, nHelp, bClick,;
  14.                nClrText, nClrPane, cMsg, lUpdate ) CONSTRUCTOR
  15.  
  16.    METHOD Redefine( bSetGet, oWnd, nHelp, aRadioIDs, bClick,;
  17.                     nClrText, nClrPane, cMsg, lUpdate ) CONSTRUCTOR
  18.  
  19.    METHOD nOption( nNewOption ) SETGET
  20.  
  21.    METHOD Refresh()
  22.  
  23.    METHOD Set3DLook() INLINE ;
  24.           AEval( ::aItems, { | oRadio | oRadio:Set3DLook() } )
  25.  
  26.    METHOD End() INLINE  AEval( ::aItems, { | oRadio | oRadio:End() } ),;
  27.                         Super:End()
  28.  
  29. ENDCLASS
  30.  
  31. //----------------------------------------------------------------------------//
  32.  
  33. METHOD New( nRow, nCol, acItems, bSetGet, oWnd, nHelp, bClick,;
  34.             nClrText, nClrPane, cMsg, lUpdate ) CLASS TRadMenu
  35.  
  36.    local n
  37.  
  38.    if nClrText == nil
  39.       nClrPane := oWnd:nClrPane
  40.    endif
  41.  
  42.    DEFAULT nHelp := 100, nClrText := oWnd:nClrText, lUpdate := .f.
  43.  
  44.    ::aItems  = {}
  45.    ::bSetGet = bSetGet
  46.    ::bClick  = bClick
  47.    ::cMsg    = cMsg
  48.    ::lUpdate = lUpdate
  49.  
  50.    if ValType( Eval( bSetGet ) ) != "N"
  51.       Eval( bSetGet, 1 )
  52.    endif
  53.  
  54.    for n = 1 to Len( acItems )
  55.       AAdd( ::aItems, TRadio():New( nRow + n - 1, nCol, acItems[ n ],;
  56.             n == 1,;                // First element is group
  57.             n == Eval( bSetGet ),;  // Is Checked ?
  58.             n, oWnd, Self, nHelp, nClrText, nClrPane, cMsg, lUpdate ) )
  59.    next
  60.  
  61. return nil
  62.  
  63. //----------------------------------------------------------------------------//
  64.  
  65. METHOD nOption( nNewOption ) CLASS TRadMenu
  66.  
  67.    if nNewOption != nil
  68.       Eval( ::bSetGet, nNewOption )
  69.       if ::bClick != nil
  70.          Eval( ::bClick )
  71.       endif
  72.    else
  73.       return Eval( ::bSetGet )
  74.    endif
  75.  
  76. return nil
  77.  
  78. //----------------------------------------------------------------------------//
  79.  
  80. METHOD Redefine( bSetGet, oWnd, nHelp, anItemsIDs, bClick, nClrText,;
  81.                  nClrPane, cMsg, lUpdate )  CLASS TRadMenu
  82.  
  83.    local n
  84.  
  85.    if nClrText == nil
  86.       nClrPane := oWnd:nClrPane
  87.    endif
  88.  
  89.    DEFAULT nHelp := 100, nClrText := oWnd:nClrText, lUpdate := .f.
  90.  
  91.    ::bSetGet = bSetGet
  92.    ::aItems  = {}
  93.    ::bClick  = bClick
  94.    ::cMsg    = cMsg
  95.    ::lUpdate = lUpdate
  96.  
  97.    if ValType( Eval( bSetGet ) ) != "N"
  98.       Eval( bSetGet, 1 )
  99.    else
  100.       if Eval( bSetGet ) == 0
  101.          Eval( bSetGet, 1 )
  102.       endif
  103.    endif
  104.  
  105.    for n = 1 to Len( anItemsIDs )
  106.        AAdd( ::aItems, TRadio():ReDefine( anItemsIDs[ n ], ;
  107.                                n == Eval( bSetGet ),;  // Is Checked ?
  108.                                n,;
  109.                                oWnd, Self, nHelp, nClrText, nClrPane,;
  110.                                cMsg, lUpdate ) )
  111.    next
  112.  
  113. return Self
  114.  
  115. //---------------------------------------------------------------------------//
  116.  
  117. METHOD Refresh() CLASS TRadMenu
  118.  
  119.    local nOption := Eval( ::bSetGet )
  120.    local nAt     := AScan( ::aItems, { | oRadio | oRadio:lIsChecked() } )
  121.  
  122.    if nAt != nOption .and. nAt <= Len( ::aItems )
  123.       ::aItems[ nAt ]:SetCheck( .f. )
  124.       ::aItems[ nOption ]:SetCheck( .t. )
  125.    endif
  126.  
  127. return nil
  128.  
  129. //---------------------------------------------------------------------------//
  130.