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 >
Wrap
Text File
|
1994-06-09
|
3KB
|
130 lines
#include "FiveWin.ch"
//----------------------------------------------------------------------------//
CLASS TRadMenu
DATA aItems
DATA bSetGet
DATA bClick
DATA cMsg
DATA lUpdate
METHOD New( nRow, nCol, acItems, bSetGet, oWnd, nHelp, bClick,;
nClrText, nClrPane, cMsg, lUpdate ) CONSTRUCTOR
METHOD Redefine( bSetGet, oWnd, nHelp, aRadioIDs, bClick,;
nClrText, nClrPane, cMsg, lUpdate ) CONSTRUCTOR
METHOD nOption( nNewOption ) SETGET
METHOD Refresh()
METHOD Set3DLook() INLINE ;
AEval( ::aItems, { | oRadio | oRadio:Set3DLook() } )
METHOD End() INLINE AEval( ::aItems, { | oRadio | oRadio:End() } ),;
Super:End()
ENDCLASS
//----------------------------------------------------------------------------//
METHOD New( nRow, nCol, acItems, bSetGet, oWnd, nHelp, bClick,;
nClrText, nClrPane, cMsg, lUpdate ) CLASS TRadMenu
local n
if nClrText == nil
nClrPane := oWnd:nClrPane
endif
DEFAULT nHelp := 100, nClrText := oWnd:nClrText, lUpdate := .f.
::aItems = {}
::bSetGet = bSetGet
::bClick = bClick
::cMsg = cMsg
::lUpdate = lUpdate
if ValType( Eval( bSetGet ) ) != "N"
Eval( bSetGet, 1 )
endif
for n = 1 to Len( acItems )
AAdd( ::aItems, TRadio():New( nRow + n - 1, nCol, acItems[ n ],;
n == 1,; // First element is group
n == Eval( bSetGet ),; // Is Checked ?
n, oWnd, Self, nHelp, nClrText, nClrPane, cMsg, lUpdate ) )
next
return nil
//----------------------------------------------------------------------------//
METHOD nOption( nNewOption ) CLASS TRadMenu
if nNewOption != nil
Eval( ::bSetGet, nNewOption )
if ::bClick != nil
Eval( ::bClick )
endif
else
return Eval( ::bSetGet )
endif
return nil
//----------------------------------------------------------------------------//
METHOD Redefine( bSetGet, oWnd, nHelp, anItemsIDs, bClick, nClrText,;
nClrPane, cMsg, lUpdate ) CLASS TRadMenu
local n
if nClrText == nil
nClrPane := oWnd:nClrPane
endif
DEFAULT nHelp := 100, nClrText := oWnd:nClrText, lUpdate := .f.
::bSetGet = bSetGet
::aItems = {}
::bClick = bClick
::cMsg = cMsg
::lUpdate = lUpdate
if ValType( Eval( bSetGet ) ) != "N"
Eval( bSetGet, 1 )
else
if Eval( bSetGet ) == 0
Eval( bSetGet, 1 )
endif
endif
for n = 1 to Len( anItemsIDs )
AAdd( ::aItems, TRadio():ReDefine( anItemsIDs[ n ], ;
n == Eval( bSetGet ),; // Is Checked ?
n,;
oWnd, Self, nHelp, nClrText, nClrPane,;
cMsg, lUpdate ) )
next
return Self
//---------------------------------------------------------------------------//
METHOD Refresh() CLASS TRadMenu
local nOption := Eval( ::bSetGet )
local nAt := AScan( ::aItems, { | oRadio | oRadio:lIsChecked() } )
if nAt != nOption .and. nAt <= Len( ::aItems )
::aItems[ nAt ]:SetCheck( .f. )
::aItems[ nOption ]:SetCheck( .t. )
endif
return nil
//---------------------------------------------------------------------------//