It's a good way to control by password, because options are only an array,
an have name of procedure.
After change array, create the menu.
I think it is an good sample to insert into gtwvg/tests folder (when
completed).
oMenu := CreateMainMenu()
SetColor( "N/W,N/GR*,,,N/W*" )
Wvt_SetMenu( oMenu:hMenu )
.....
Function CompleteMenu()
Local aMenu := {}
Private mMenuLevel := 0, mMenuOpt := {}
mMenuLevel := 0
mMenuOpt := {}
MenuOption("Option 1")
MenuDrop()
MenuOption("Option 1.1","test11")
MenuOption("Option 1.2","test12")
MenuUnDrop()
MenuOption("Option 2")
MenuDrop()
MenuOption("Option 2.1","test21")
MenuOption("Option 2.2")
MenuDrop()
MenuOption("Option 2.2.1","test221")
MenuUnDrop()
MenuUnDrop()
Return aMenu
Static Function MenuOption(mPrompt,mProg)
Local nCont
Local mNow := mMenuOpt
For nCont = 1 to mMenuLevel
mNow := mNow[Len(mNow)]
If ValType(mNow[2]) # "A"
mNow[2] := {}
Endif
mNow := mNow[2]
Next
Aadd(mNow,{mPrompt,{},mProg})
Return NIL
Static Function MenuDrop()
memvar mMenuLevel
mMenuLevel++
return NIL
Static Function MenuUnDrop()
memvar mMenuLevel
mMenuLevel--
return NIL
Function CreateMainMenu()
aMenu := CompleteMenu()
// CheckPassword(aMenu,user,password)
oMenu := wvtMenu():New():Create
MakeMenu(oMenu,aMenu)
Return oMenu
Static Function MakeMenu(oMenu,aMenu)
Local ThisOption, nCont
For nCont = 1 To Len(aMenu)
If Len(aMenu[nCont,2]) > 0 // if have an submenu
ThisOption := wvtMenu():New():Create
ThisOption:Caption := aMenu[nCont,1]
MakeMenu(ThisOption,aMenu[nCont,2])
oMenu:AddItem("",ThisOption)
Else
oMenu:AddItem(aMenu[nCont,1],aMenu[nCont,3] ) // string???
Endif
Next
Return oMenu
Static Function ActivateMenu( oMenu ) // from sample in
harbour/contrib/gtwvg/tests
LOCAL nMenu := Wvt_GetLastMenuEvent()
LOCAL aMenuItem
IF !EMPTY( nMenu )
IF HB_ISOBJECT( oMenu )
IF !EMPTY( aMenuItem := oMenu:FindMenuItemById( nMenu ) )
if .Not. Empty[ WVT_MENU_ACTION]) // string???
do &(aMenuItem[ WVT_MENU_ACTION] //
Endif
//
// IF HB_ISBLOCK( aMenuItem[ WVT_MENU_ACTION ] )
// EVAL( aMenuItem[ WVT_MENU_ACTION ] )
// ENDIF
ENDIF
ENDIF
ENDIF
RETURN NIL
Jos� M. C. Quintas